Масиви в мові С++ План Поняття масиву. Одновимірні масиви. Багатовимірні масиви. Операції над масивами.
Поняття масиву. Масив це структура однотипних елементів, що займають безперервну область пам'яті. З масивом пов'язані наступні його властивості: ім'я, тип, розмірність, розмір. Формат опису масиву наступний: тип_елементів ім'я [константний_вираз] Константний вираз визначає розмір масиву, тобто число елементів цього масиву. Наприклад, згідно опису int A[10];//оголошений масив з ім'ям А, що містить 10 //елементів цілого типу Елементи масиву позначаються індексованими іменами. Нижнє значення індексу рівне 0: А[0], А[1], А[2], А[3], А[4], А[5], А[6], А[7], А[8], А[9]
Розмір масиву може явно не вказуватися, якщо при його оголошенні проводиться ініціалізація значень елементів. Наприклад: int р[]={2,4,6,10,1}; В цьому випадку створюється масив з п'яти елементів з наступними значеннями: р[0]=2, р[1]=4, р[2]=6, р[3]=10, р[4]=1 int М[6]={5,3,2};
Приклад 9.1. Введення з клавіатури і виведення на екран одновимірного масиву. //Введення і виведення масиву #include void main () { int i, A[5]; clrscr () ; for(i=0; i<5; i++) { cout >A[i];} for(i=0; i<5; i++) cout<<"A["<<i<<"]="<<A[i]<<" "; getch(); }
Приклад 9.2. Введення дійсного числа масиву і обчислення середнього значення. //Середнє значення масиву #include void main() { const n=10; int i; double A[n], SA; clrscr(); for(i=0; i >A[i] ; } SA= 0; for(i=0; i<n;i++) SA=SA+A[i]; SA=SA/n; cout<<Seredne znachennya="<<SA; getch(); }
Приклад 9.3. Сортування масиву «методом бульбашки ». //Сортування масиву #include void main() { int X[]={6,4,9,3,2,1,5,7,8,10}; int i, j, n,A; clrscr(); n=sizeof(X)/sizeof(X[0]) ; for(i=0; i<n-1; i++) for(j=0; j<n-1-i; j++) if(X[j]>X[j+1]) {A=X[j]; X[j]=X[j+1]; X[j+1]=A;} for(i=0; i<n; i++) cout<<X[i]<<" "; getch(); }
Приклад 9.4. Кількість елементів між мінімумом і максимумом Написати програму, яка для цілочисельного масиву з 100 елементів визначає, скільки позитивних елементів розташовується між його максимальним і мінімальним елементами. Узагальнений алгоритм рішення задачі: 1.Визначити, де в масиві розташовані його максимальний і мінімальний елементи, тобто знайти їх індекси. 2.Проглянути всі елементи, розташовані між ними. Якщо елемент масиву більше нуля, збільшити лічильник елементів на одиницю.
#include int main(){ const int n = 10; int a[n] = {1, 3, -5, 1, -2, 1, -1, 3, 8, 4}; int i, imax, imin, count; for (i= imax= imin= 0; i < n; i++) { if (a[i] > a[imax]) imax= i; if (a[i] < a[imin]) imin=i;} cout << "\n\t max= " << a[imax] << " min= " << a[imin]; // otladka int ibeg = imax < imin ? imax : imin; int iend = imax < imin ? imin : imax; cout << "\n\t ibeg= " << ibeg << " iend= " << iend;// otladka for (count = 0, i= ibeg + 1; i < iend; i++) if (a[i] > 0) count++; cout << " Kilkist pozitivnih: " << count << endl; getch(); return 0; }
У приведеній нижче програмі напрям перегляду, тобто приріст індексу, зберігається в змінній d. Якщо масив є видимим «зліва направо», вона рівна 1, інакше -1. Зверніть увагу і на умову продовження цього циклу, що змінилася. #include int main(){ const int n = 10; int a[n]; int i, imax, imin, kol; cout << " Vvedit " <<n<< " cilih chisel:" << endl; for (i = 0; i > a[i]; for (i = 0; i < n; i++) cout << a[i]<< " "; for (i = imax= imin = 0; i < n; i++) { if (a[i] > a[imax]) imax= i; if (a[i] < a[imin]) imin = i; } int d = 0; if (imax < imin) d = 1; else if (imax > imin) d = -1; for (kol= 0, i= imax + d; i != imin; i+=d) if (a[i] > 0) kol++; cout << "\n Kilkist dodatnih: " << kol << endl; getch(); return 0; }
Багатовимірні масиви. Двовимірний масив трактується як одновимірний масив, елементами якого є масив з вказаним в описі типом елементів. Наприклад, оператор float R[5][10]; оголошує масив з п'яти елементів, кожен з яких є масив з десяти дійсних чисел. Окремі величини цього масиву позначаються іменами з двома індексами: R[0][0], R[0][1]..., R[4][9]. Приклад опису тривимірного масиву: double X[3][7][20] ; При описі багатовимірних масивів їх також можна ініціалізувати. int M[3][3]={ 11,12,13,21,22,23,31,32,33 };
Операції над масивами. Приклад Обчислення і виведення на екран таблиці множення у формі матриці Піфагора. // Матриця Піфагора #include void main() { int i,j, A[10][10]; clrscr(); for(i=1; i<=9; i++) { for(j=1; j<=9; j++) { A[i][j]=i*j; printf("%5d",A[i][j]); } printf ("\n"); } getch(); }
Приклад Заповнення матриці випадковими числами в діапазоні від 0 до 99 і пошук в ній максимального значення. #include #define n 5 void main () { int i, j, ImaxA, JmaxA, A[n] [n]; clrscr(); randomize(); //Установка датчика случайных чисел for(i=0; i<n; i++) { for(j=0; j<n; j++) { A[i][j]=rand()%100; cout<<setw(6) <<A[i] [ j ] ; } cout<<endl; } ImaxA=JmaxA=0; for(i=0; i<n; i++) { for(j=0; j<n; j++) if(A[i][j]>A[ImaxA][JmaxA]) { ImaxA=i; JmaxA=j; } } cout<<"Максимальне_значення: ["<<ImaxA<<"] [" <<JmaxA<<"]=" <<A[ImaxA] [JmaxA]; getch();}
Приклад 10.3 Середнє арифметичне і кількість позитивних елементів Написати програму, яка для цілочисельної матриці 10 X 20 визначає середнє арифметичне її елементів і кількість позитивних елементів в кожному рядку. #include void main(){ const int nrow = 5, ncol = 5; int a[nrow][ncol]; int i, j; cout << "Vvedite elementi masiva:" << endl; for (i = 0; i < nrow; i++) for (j = 0; j > a[i][j]; for (i = 0; i < nrow; i++) { for (j= 0; j < ncol; j++) cout << setw(4) << a[i][j] << " "; cout << endl; } int n_pos_el; float s= 0; for (i= 0; i < nrow; i++) { n_pos_el= 0; for (j = 0; j < ncol; j++) { s += a[i][j]; if (a[i][j] > 0) n_pos_el++; } cout << " Ryadok: " << i << " kilkist: " << n_pos_el<< endl; } s /= nrow * ncol; cout << "Seredne arifmetichne: " << s << endl; getch(); }