SlideShare a Scribd company logo
Двовимірні масиви
С++ дозволяє створювати багатовимірні масиви. Вимірність масиву
визначається кількістю індексів. Елементи одновимірного масиву
(вектора) мають один індекс, двовимірного масиву (матриці, таблиці) –
два індекси: перший з них – номер рядка, другий – номер стовпчика.
Кількість індексів у масивах є необмежена. При розміщуванні елементів
масиву в пам’яті комп’ютера першою чергою змінюється крайній правий
індекс, потім решта – справа наліво.
Найпростішим видом багатовимірного масиву є двовимірний масив.
Двовимірний масив – це масив одновимірних масивів. Двовимірний
масив оголошується наступним чином:
<тип> <ім’я> [ <розмір1>] [ <розмір2>] ;
Кількість елементів масиву дорівнює добуткові кількості елементів за
кожним індексом. У прикладі
int B[3][4];
оголошено двовимірний масив з 3-х рядків та 4-х стовпчиків (12-ти
елементів) цілого типу:
В[0][0], В[0][1], В[0][2], В[0][3],
В[1][0], В[1][1], В[1][2], В[1][3],
В[2][0], В[2][1], В[2][2], В[2][3];
Під масив надається пам’ять, потрібна для розташування усіх його
елементів. Елементи масиву один за одним, з першого до останнього,
запам’ятовуються у послідовно зростаючих адресах пам’яті так само, як і
елементи одновимірного масиву. Двовимірні масиви зберігаються у вигляді
матриці, де перший індекс відповідає за рядок, а другий – за стовпчик. Це
означає, що правий індекс змінюється швидше лівого, якщо рухатися по
масиву в порядку розташування елементів в пам'яті. На рис. показано
графічне представлення двовимірного масиву в пам'яті. Лівий індекс можна
розглядати як покажчик на рядок.
При оголошенні масиву можна ініціалізовувати початкові значення
його елементів, причому необов’язково усіх, наприклад:
int w[3][3]={ { 2, 3, 4 },{ 3, 4, 8 },{ 1, 0, 9 } };
double C[4][2]={1.1, 2, 3, 3.4, 0.5, 6.8, 9.7, 0.9};
Двовимірні масиви можна оголошувати й зі створюванням типу
користувача:
typedef <тип_даних> <і’мя_типу>[<розмір1>][<розмір2>];
<і’мя_типу> <і’мя_масиву> ;
Наприклад, створимо тип з ім’ям matr як масив додатних цілих чисел з
10-ти рядків і 7-ми стовпчиків та оголосимо два масиви – M1 і M2 –
створеного типу:
typedef int matr[10][7];
matr M1, M2;
Для оголошення масивів можна також використовувати типізовані
констант-масиви, які дозволяють водночас оголосити масив і задати його
значення в розділі оголошень констант, наприклад:
const int arr[2][2] = {{9, 3},{ –7, 123};
Введення-виведення значень елементів двовимірного масиву можна
лише поелементно, для чого слід організовувати цикли, в яких послідовно
змінюватимуться значення індексів елементів.
Приклад виведення двовимірного масиву у вигляді таблиці:
const int n=5,m=3;
int i,j;
double A[n][m];
for (i = 0; i < n; i++) {
for (j=0; j < m; j++) {
A[i][j]=(i+j)*0.1;
printf(“%3.1lf ",A[i][j]);
}
printf("n");
}
С++ дозволяє створювати масиви з розмірностями більше двох.
Багатовимірний масив оголошується наступним чином:
<тип> <ім’я> [ <розмір1>] [ <розмір2>] … [ <розмірN>];
Масиви, що мають більше трьох розмірностей, використовуються
надзвичайно рідко, оскільки потрібен великий обсяг пам'яті для їх
зберігання.
Lecture 7.2 for distance courses "Fundamentals of Informatics"
#include <iostream> Met_massiv2_N
#include <math.h>
int main()
{ const int n=10,kd=3;
double w[n], Ne[n][kd],dw;
double wmin=47;
double Nen[kd]={177,442,993},wn[kd]={220,272,293};
double a[kd]={0.49,-0.06,0.15},b[kd]={1.7,2.88,2.82},c[kd]={1.19,1.82,1.97};
int i,j;
dw=(wn[2]-wmin)/(n-1);
for (i = 0; i < n; i++) {
w[i]=wmin+i*dw;
for (j = 0; j < kd; j++)
Ne[i][j]=Nen[j]*(a[j]*w[i]/wn[j]+b[j]*pow(w[i]/wn[j],2)-c[j]*pow(w[i]/wn[j],3));
}
printf("w(rad/s) Ne IAMZ-238(kVt) Ne 3TD-4(kVt) Ne 6TD-3(kVt)n");
for (i = 0; i < n; i++) {
printf(" %5.1lf t",w[i]);
for (j = 0; j < kd; j++){
if (w[i]<=wn[j])
printf("%5.1lf tt",Ne[i][j]);
else printf("----- tt");
}
printf("n");
}
return 0;
}
Практичне завдання 7.1
Написати програму, яка буде реалізовувати наступний алгоритм:
1. Знайти максимальний та мінімальний елементи двовимірного масиву.
2. Рядок, що містить максимальний елемент, поміняти місцями з рядком, що містить
мінімальний елемент. Вивести отриманий масив.
3. Розташувати елементи кожного рядка в порядку зменшення.
Приклад інтерфейсу програми:
Блок-схема до завдання 7.1
Перестановка рядків
 Сортування масиву за зростанням
Сортування за зменшенням
#include <iostream>
massiv_z_7_1
#include <time.h>
#include <stdlib.h>
int main()
{
const int n=10,m=5;
int i,j,imin,imax,k;
double A[n][m];
double min,max,tmp;
srand(time(NULL));
for (i = 0; i < n; i++) {
for (j=0; j < m; j++) {
A[i][j]=rand()%100+1;
printf("%3.0lf ",A[i][j]);
}
printf("n");
}
//Пошук максимального і мінімального елементів масиву
min=max=A[0][0];
imin=imax=0;
for (i = 0; i < n; i++)
for (j=0; j < m; j++)
{
if (min>A[i][j])
{ min=A[i][j];
imin=i;
}
if (max<A[i][j])
{ max=A[i][j];
imax=i;
}
}
printf("ntmin=%3.0lf max=%3.0lf imin=%d imax=%dnn",min,max,imin+1,imax+1);
// Перестановка рядків
for (j=0; j < m; j++)
{tmp=A[imax][j];
A[imax][j]=A[imin][j];
A[imin][j]=tmp;
}
for (i = 0; i < n; i++) {
for (j=0; j < m; j++) {
printf("%3.0lf ",A[i][j]);
}
printf("n");
}
printf("n");
//Сортування рядків масиву за зменшенням
for (i = 0; i < n; i++)
for (j = 0; j < m-1; j++)
for (k=j+1; k < m; k++)
if (A[i][j]<A[i][k]) {
tmp=A[i][j];
A[i][j]=A[i][k];
A[i][k]=tmp;
}
for (i = 0; i < n; i++) {
for (j=0; j < m; j++) {
printf("%3.0lf ",A[i][j]);
}
printf("n");
}
return 0;
}
Практичне завдання 7.3
 Постановка задачі
Надано: масив оцінок Oc[kstud][koc] студентів, де kstud – кількість студентів, koc – кількість
оцінок відповідного i-го студента, масив вагових коефіцієнтів кожної j-ої дисципліни Kr[koc], масив
додаткових балів кожного i-го студента D[kstud].
1. Створити програму формування масиву RB[kstud], в якому кожен елемент – рейтинговий бал i-го
студента.
2. Розташувати елементи масиву RB[kstud] в порядку зменшення.
Блок-схема
massiv_reiting_ball

More Related Content

PDF
Matrici
PPT
05 Arrays
PPTX
Lecture 7.1 for distance courses "Fundamentals of Informatics"
PPT
war9klassdist1.ppt
PPT
лекція 9
PPT
лекції 7
PPT
1218562
Matrici
05 Arrays
Lecture 7.1 for distance courses "Fundamentals of Informatics"
war9klassdist1.ppt
лекція 9
лекції 7
1218562

Similar to Lecture 7.2 for distance courses "Fundamentals of Informatics" (20)

PPS
Tablici
PPT
Масиви Структури даних (1).ppt
PPTX
Masiv
PPTX
Net framework і c# module 3
PPT
Учень, як вчений
PDF
PPT
Кластерний аналіз даних методом k-середніх в R
PPTX
Python
PDF
PDF
лекція3
PPTX
масиви в С++ презентация
PDF
Масиви в C++
DOC
Завдання олімпіади
PPTX
11 клас 11 урок. Призначення й використання основних математичних, статистичн...
PPTX
мова програмування Python 3.4
DOCX
лекція 8
DOCX
лекція 8
PPT
Tablici
Масиви Структури даних (1).ppt
Masiv
Net framework і c# module 3
Учень, як вчений
Кластерний аналіз даних методом k-середніх в R
Python
лекція3
масиви в С++ презентация
Масиви в C++
Завдання олімпіади
11 клас 11 урок. Призначення й використання основних математичних, статистичн...
мова програмування Python 3.4
лекція 8
лекція 8
Ad

More from kostyanik-irina (14)

PPTX
Lecture 12 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 11 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 06 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 10 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 05 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 09 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 08 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 04 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 03 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 02 for distance courses "Fundamentals of Informatics"
PPTX
Lecture 01 for distance courses "Fundamentals of Informatics"
PPTX
Rfid4v prezentation
PPTX
Its kgm mctc
PPT
Present course kostyanik
Lecture 12 for distance courses "Fundamentals of Informatics"
Lecture 11 for distance courses "Fundamentals of Informatics"
Lecture 06 for distance courses "Fundamentals of Informatics"
Lecture 10 for distance courses "Fundamentals of Informatics"
Lecture 05 for distance courses "Fundamentals of Informatics"
Lecture 09 for distance courses "Fundamentals of Informatics"
Lecture 08 for distance courses "Fundamentals of Informatics"
Lecture 04 for distance courses "Fundamentals of Informatics"
Lecture 03 for distance courses "Fundamentals of Informatics"
Lecture 02 for distance courses "Fundamentals of Informatics"
Lecture 01 for distance courses "Fundamentals of Informatics"
Rfid4v prezentation
Its kgm mctc
Present course kostyanik
Ad

Lecture 7.2 for distance courses "Fundamentals of Informatics"

  • 1. Двовимірні масиви С++ дозволяє створювати багатовимірні масиви. Вимірність масиву визначається кількістю індексів. Елементи одновимірного масиву (вектора) мають один індекс, двовимірного масиву (матриці, таблиці) – два індекси: перший з них – номер рядка, другий – номер стовпчика. Кількість індексів у масивах є необмежена. При розміщуванні елементів масиву в пам’яті комп’ютера першою чергою змінюється крайній правий індекс, потім решта – справа наліво. Найпростішим видом багатовимірного масиву є двовимірний масив. Двовимірний масив – це масив одновимірних масивів. Двовимірний масив оголошується наступним чином: <тип> <ім’я> [ <розмір1>] [ <розмір2>] ; Кількість елементів масиву дорівнює добуткові кількості елементів за кожним індексом. У прикладі int B[3][4]; оголошено двовимірний масив з 3-х рядків та 4-х стовпчиків (12-ти елементів) цілого типу: В[0][0], В[0][1], В[0][2], В[0][3], В[1][0], В[1][1], В[1][2], В[1][3], В[2][0], В[2][1], В[2][2], В[2][3];
  • 2. Під масив надається пам’ять, потрібна для розташування усіх його елементів. Елементи масиву один за одним, з першого до останнього, запам’ятовуються у послідовно зростаючих адресах пам’яті так само, як і елементи одновимірного масиву. Двовимірні масиви зберігаються у вигляді матриці, де перший індекс відповідає за рядок, а другий – за стовпчик. Це означає, що правий індекс змінюється швидше лівого, якщо рухатися по масиву в порядку розташування елементів в пам'яті. На рис. показано графічне представлення двовимірного масиву в пам'яті. Лівий індекс можна розглядати як покажчик на рядок.
  • 3. При оголошенні масиву можна ініціалізовувати початкові значення його елементів, причому необов’язково усіх, наприклад: int w[3][3]={ { 2, 3, 4 },{ 3, 4, 8 },{ 1, 0, 9 } }; double C[4][2]={1.1, 2, 3, 3.4, 0.5, 6.8, 9.7, 0.9}; Двовимірні масиви можна оголошувати й зі створюванням типу користувача: typedef <тип_даних> <і’мя_типу>[<розмір1>][<розмір2>]; <і’мя_типу> <і’мя_масиву> ; Наприклад, створимо тип з ім’ям matr як масив додатних цілих чисел з 10-ти рядків і 7-ми стовпчиків та оголосимо два масиви – M1 і M2 – створеного типу: typedef int matr[10][7]; matr M1, M2; Для оголошення масивів можна також використовувати типізовані констант-масиви, які дозволяють водночас оголосити масив і задати його значення в розділі оголошень констант, наприклад: const int arr[2][2] = {{9, 3},{ –7, 123};
  • 4. Введення-виведення значень елементів двовимірного масиву можна лише поелементно, для чого слід організовувати цикли, в яких послідовно змінюватимуться значення індексів елементів. Приклад виведення двовимірного масиву у вигляді таблиці: const int n=5,m=3; int i,j; double A[n][m]; for (i = 0; i < n; i++) { for (j=0; j < m; j++) { A[i][j]=(i+j)*0.1; printf(“%3.1lf ",A[i][j]); } printf("n"); } С++ дозволяє створювати масиви з розмірностями більше двох. Багатовимірний масив оголошується наступним чином: <тип> <ім’я> [ <розмір1>] [ <розмір2>] … [ <розмірN>]; Масиви, що мають більше трьох розмірностей, використовуються надзвичайно рідко, оскільки потрібен великий обсяг пам'яті для їх зберігання.
  • 6. #include <iostream> Met_massiv2_N #include <math.h> int main() { const int n=10,kd=3; double w[n], Ne[n][kd],dw; double wmin=47; double Nen[kd]={177,442,993},wn[kd]={220,272,293}; double a[kd]={0.49,-0.06,0.15},b[kd]={1.7,2.88,2.82},c[kd]={1.19,1.82,1.97}; int i,j; dw=(wn[2]-wmin)/(n-1); for (i = 0; i < n; i++) { w[i]=wmin+i*dw; for (j = 0; j < kd; j++) Ne[i][j]=Nen[j]*(a[j]*w[i]/wn[j]+b[j]*pow(w[i]/wn[j],2)-c[j]*pow(w[i]/wn[j],3)); } printf("w(rad/s) Ne IAMZ-238(kVt) Ne 3TD-4(kVt) Ne 6TD-3(kVt)n"); for (i = 0; i < n; i++) { printf(" %5.1lf t",w[i]); for (j = 0; j < kd; j++){ if (w[i]<=wn[j]) printf("%5.1lf tt",Ne[i][j]); else printf("----- tt"); } printf("n"); } return 0; }
  • 7. Практичне завдання 7.1 Написати програму, яка буде реалізовувати наступний алгоритм: 1. Знайти максимальний та мінімальний елементи двовимірного масиву. 2. Рядок, що містить максимальний елемент, поміняти місцями з рядком, що містить мінімальний елемент. Вивести отриманий масив. 3. Розташувати елементи кожного рядка в порядку зменшення. Приклад інтерфейсу програми:
  • 10.  Сортування масиву за зростанням
  • 12. #include <iostream> massiv_z_7_1 #include <time.h> #include <stdlib.h> int main() { const int n=10,m=5; int i,j,imin,imax,k; double A[n][m]; double min,max,tmp; srand(time(NULL)); for (i = 0; i < n; i++) { for (j=0; j < m; j++) { A[i][j]=rand()%100+1; printf("%3.0lf ",A[i][j]); } printf("n"); }
  • 13. //Пошук максимального і мінімального елементів масиву min=max=A[0][0]; imin=imax=0; for (i = 0; i < n; i++) for (j=0; j < m; j++) { if (min>A[i][j]) { min=A[i][j]; imin=i; } if (max<A[i][j]) { max=A[i][j]; imax=i; } } printf("ntmin=%3.0lf max=%3.0lf imin=%d imax=%dnn",min,max,imin+1,imax+1); // Перестановка рядків for (j=0; j < m; j++) {tmp=A[imax][j]; A[imax][j]=A[imin][j]; A[imin][j]=tmp; } for (i = 0; i < n; i++) { for (j=0; j < m; j++) { printf("%3.0lf ",A[i][j]); } printf("n"); } printf("n");
  • 14. //Сортування рядків масиву за зменшенням for (i = 0; i < n; i++) for (j = 0; j < m-1; j++) for (k=j+1; k < m; k++) if (A[i][j]<A[i][k]) { tmp=A[i][j]; A[i][j]=A[i][k]; A[i][k]=tmp; } for (i = 0; i < n; i++) { for (j=0; j < m; j++) { printf("%3.0lf ",A[i][j]); } printf("n"); } return 0; }
  • 15. Практичне завдання 7.3  Постановка задачі Надано: масив оцінок Oc[kstud][koc] студентів, де kstud – кількість студентів, koc – кількість оцінок відповідного i-го студента, масив вагових коефіцієнтів кожної j-ої дисципліни Kr[koc], масив додаткових балів кожного i-го студента D[kstud]. 1. Створити програму формування масиву RB[kstud], в якому кожен елемент – рейтинговий бал i-го студента. 2. Розташувати елементи масиву RB[kstud] в порядку зменшення.