Половинко_ЛР_5. Обработка многомерных массивов
Скачать 114.13 Kb.
|
О Т Ч Е Т о выполнении лабораторной работы № 5 по дисциплине «Языкииметодыпрограммирования»
Самара 2021 г. Цель и задачи работыЦелью работы является получение обучающимися навыков работы со средствами обработки двумерных массивов в языке С++. Задачами работы являются: написание программы на языке С++ с использованием двумерных массивов; тестирование работоспособности программы для различных исходных данных. Задание 1. Дана матрица размером M × N. Определить k – количество особых элементов массива, считая его элемент особым, если он больше суммы остальных элементов его столбца. Графическая схема алгоритма.Программный код:Для статического массива:#include #include #include #include #include using namespace std; int main() { int i, j, n; int k = 0; const int L = 6, H = 3; int Arr[H][L]; int summ = 0; for (i = 0; i < H; i++) { for (j = 0; j < L; j++) { Arr[i][j] = rand() % 51; } } for (i = 0; i < H; i++) { for (j = 0; j < L; j++) { cout << setw(5) << Arr[i][j]; } cout << endl; } for (j = 0; j < L; j++) { for (i = 0; i < H; i++) { summ += Arr[i][j]; } for (i = 0; i < H; i++) { if (Arr[i][j] > summ - Arr[i][j]) { k += 1; } } summ = 0; } if (k == 0) { cout << "There was no such thing as special elements" << endl; } else { cout << "Amount of special elements = " << k << endl; } return 0; } Для одномерного динамического массива: #include #include using namespace std; int main() { setlocale(0, ""); srand(time(NULL)); int m, n; cout << "Enter M: "; cin >> m; cout << "Enter N: "; cin >> n; cout << endl; int* mas = new int[m * n]; int cnt = 0, sum = 0; cout << "Array: " << endl; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { *(mas + (i * m + j * n)) = rand() % 20 - 5; cout << setw(5) << *(mas + (i * m + j * n)) << " "; } cout << endl; } for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { sum = sum + *(mas + (j * m + i * n)); } for (int a = 0; a < n; a++) { if (*(mas + (a * m + i * n)) > sum - *(mas + (a * m + i * n))) cnt++; } sum = 0; } if (cnt == 0) cout << "There was no such thing as special elements"; else cout << "There are " << cnt << " special elements."; cout << endl; delete[] mas; return 0; } Для двумерного динамического массива: #include #include using namespace std; int main() { setlocale(0, ""); srand(time(NULL)); int m, n, cnt = 0, sum; cout << "Enter M: "; cin >> m; cout << "Enter N: "; cin >> n; cout << endl; int** mas = new int* [m]; cout << "Array: " << endl; for (int i = 0; i < m; i++) { *(mas + i) = new int[n]; for (int j = 0; j < n; j++) { mas[i][j] = rand() % 20 - 5; cout << setw(5) << mas[i][j] << " "; } cout << endl; } for (int i = 0; i < m; i++) { sum = 0; for (int j = 0; j < n; j++) { sum += mas[j][i]; } for (int a = 0; a < n; a++) { if (mas[a][i] > sum - mas[a][i]) cnt++; } } if (cnt == 0) cout << "There was no such thing as special elements"; else cout << "There are " << cnt << " special elements in array."; cout << endl; for (int i = 0; i < m; i++) { delete[] * (mas + i); } delete[] mas; return 0; } Пример работы программыДля статического массива:Вывод.В ходе данной лабораторной работы я научился работать со средствами обработки двумерных массивов на языке C++, а также писать программы, работающие с двумерными массивами и их тестированию. |