1. Анализ всего или части массива, то есть найти какую-нибудь его характеристику.
2. Поиск в массиве, т. е. определить, есть ли элемент с некоторым условием и (или) найти индекс и (или) значение первого, последнего такого элемента, всех таких элементов.
3. Построение массива по некоторому правилу, используя при этом индексы, одно или несколько чисел и (или) один или несколько массивов.
4. Преобразование массива: изменить их значения, переставить местами некоторые элементы, удалить один или несколько элементов массива, вставить элементы массива и т. п.
5. Сортировка по одному или нескольким критериям. При этом в качестве критерия используются либо значения элементов, либо их характеристики, например, сортировка по последней (первой) цифре целого числа, по количеству единиц в двоичном представлении и т. п.
6. Вывод массива в специальном виде.
Одна и та же задача может состоять из нескольких частей, каждая из которых относится к разным типам. Например, в следующей задаче - поиск наибольшего и наименьшего элементов массива относятся к первому типу, а их перестановка — к четвёртому.
1. Ввести массив с клавиатуры. Найти его наибольший и наименьший элементы и переставить их, т. е. на место каждого наибольшего поместить наименьший элемент, на место каждого наименьшего поместить наибольший элемент:
void main()
{ clrscr(); const n=5; int a[10], i, max1, min1, Nmin, Nmax;
for (i=0; i<n; i++)
{ cout<<"a["<<i<<"] "; cin>>a[i];
}
min1=a[0]; max1=a[0];
Nmin=0; Nmax=0;
for (i=0; i<n; i++)
if (min1>a[i])
{ min1=a[i]; Nmin=i;
}
else if (max1<a[i])
{ max1=a[i]; Nmax=i;
}
cout<<"Max "<<max1<<" number "<<Nmax<<endl;
cout<<"Min "<<min1<<" number "<<Nmin<<endl;
for (i=0; i<n; i++)
if (max1==a[i]) a[i]=min1;
else if (min1==a[i]) a[i]=max1;
for (i=0;i<n;i++)
cout<<"a["<<i<<"]= "<<a[i]<<endl;
getch();
}
2. Ввести массив с клавиатуры. Найти сумму всех чисел до первого нуля и его номер. Если нуля нет, вывести сумму всех чисел массива.
void main()
{ const n=5; int a[n], i;
for(i=0; i<n; i++) cin>>a[i];
int n2= –1,s=0; i=0;
while (i<n)
{
if (a[i]==0) { n2=i+1; break;}
s+=a[i++];
}
if (n2 == –1) cout<<"Нет нуля, сумма всех элементов = "<<s;
else { cout<<"Сумма элементов до нуля = "<<s<<”Номер нулевого элемента =”<<n2;
}
cout<<”\n”;
getch();
}
3. Сформировать целочисленный массив с помощью генератора случайных чисел. Построить массив положительных и массив отрицательных чисел и вывести их.
void main()
{ const int n = 10; int a[n], b[n], d[n];
clrscr(); cout<<"Array: "; randomize();
for (int i=0; i<n; i++)
{ a[i]=random(100)-50; printf ("%5d",a[i]);;
}
int nd=0, nb=0;
for (int i=0; i<n; i++)
if (a[i]<0) d[nd++] = a[i];
else if (a[i]>0) b[nb++] = a[i];
cout<<"\n Положит. массив: ";
for (int i=0; i<nb; i++)
printf ("%5d",b[i]);
cout<<"\nОтрицат. массив: ";
for (int i=0; i<nd; i++)
printf ("%5d",d[i]);
getch();
}
Матрицы (двухмерные массивы)
Массивы называются двухмерными, если элементы массива расположены в виде таблицы. При этом каждый элемент массива имеет два индекса, первый показывает номер строки, а второй - номер столбца, на пересечении которых он расположен.
Формат описания двухмерного массива:
<тип> <имя_массива> [размер1][размер2];Здесь
<тип>— тип элементов массива (int, float, char, структуры),
<имя_массива>записывается по правилам идентификаторов;
[размер1][размер2] - размерность двухмерного массива, т.е. количество строк и столбцов в массиве, указывается в виде целочисленной константы или константного выражения. Величина - (размер1*размер2) определяет количество ячеек оперативной памяти, зарезервированной для массива.
Например:
а) float b[3][5];
б) const n=3, m=5; int A[n][m],
где n — количество строк (первая, левая размерность), m — количество столбцов или количество элементов в строке (вторая, правая размерность). Матрица располагается в оперативной памяти и занимает непрерывный участок, объём которой равен
n*m*sizeof(int),
где int — тип элементов матрицы.