|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Кодування програми#include <iostream> #include <conio.h> #include <cmath> using namespace std;
const int n = 4; // константа для масиву (щоб не вписувати кількість елементів кожного разу) // Перелык функцій для коректного працювання програми та сприйняття переглядаючого цю роботу int Pbdiagonal(int matrix[n][n], int numd); int SumDiagonalMin(int matrix[n][n]); int absSumDiagonalMin(int matrix[n][n]); int Sum(int matrix[n][n]); int proverka(); int main() { int o; do { int arr[n][n]; // cout << "Enter the values of an array of elements" << endl; //Цикл, для задання елементів масива за домогою функції proverka, яка перевіряє правлельність вводу for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) { cout << "[" << i << "][" << j << "] = "; arr[i][j] = proverka(); } // Вивід елеменів масива на консоль користувача for (int i = 0; i < n; ++i) { cout << endl; // Кожні н - елементів переносимо строку for (int j = 0; j < n; ++j) cout << arr[i][j] << " "; } cout << endl; // перенесення строки // Показуємо результат алгоритма користувачу визиваючі певні функції cout << "Sum of the elements in the columns with out minus components = " << Sum(arr) << endl; cout << "Modul of minimum diagonal which is parallel to secondary side diagonal = "; cout << SumDiagonalMin(arr) << endl; cout << "Press ESC to exit" << endl << endl; // Щоб вийти або продовжити o = _getch(); // Очікує введення символу, щоб вийти або продовжити } while (o!= 27); // За таблицею ASCII 27 - це ESC } int proverka() { int p; while (!(cin >> p)) { cin.clear(); //Очичистимо потік, від того, що нас не задовільняє cin.ignore(4046, '\n'); cout << "Try again" << endl; // Якщо дані нас не задовільняють, то просимо спробувати ще } return p; } //Функція, що підрахувує суму елементів в стопчиках, в яких немає немає від'ємних елементів int Sum(int matrix[n][n]) { int sum = 0; for (int i = 0; i < n; i++) { int helpProverka = 0; // При кожному повторі циклу, додаткова змінна дорівнює 0, задля настпупних дій for (int j = 0; j < n; j++) if (matrix[j][i] < 0) helpProverka++; // Після перевірки, того чи є від'ємних елементів елементи в кожного стопчику, ми підраховуємо суму if (helpProverka == 0) // Тобто, підрахувається сума тількти тих стовпчиків, які складаються с додатніх елементів { for (int k = 0; k < n; k++) sum += matrix[k][i]; //Готова відповідь
} } return sum; // Результат дій передаємо функції MAIN } // Функція, що підрахувує суму кожной діагоналі, яка паралельна до бічної int Pbdiagonal(int matrix[n][n], int numd) { int sumdiagonal = 0; if (numd <= n - 1) { // ліва частина маттриці, яка знаходться до бічної діагоналі for (int i = 0; i < numd + 1; i++) { sumdiagonal += abs(matrix[i][numd - i]); // суми модулів елементів діагоналей } } else { for (int i = numd - n + 1; i < n; i++) // права частина маттриці, яка знаходться після бічної діагоналі { sumdiagonal += abs(matrix[i][numd - i]); // суми модулів елементів діагоналей } } return sumdiagonal;// Результат дій передаємо функції SumDiagonalMin } // Рахуємо суми діагоналей, паралельнихдо до бічної int SumDiagonalMin(int matrix[n][n]) { int numd; // номер діагоналі int min = abs(matrix[0][0]); // спочятку задамо по умовчанню, що модуль суми першої діагоналі дорівнює минимуму // for (numd = 0; numd < 2 * n - 1; numd++) { int sumdiagonal = Pbdiagonal(matrix, numd); // Отримуємо різні суми діагоналей по черзі if (sumdiagonal < min) { // Якщо якась з них менша за ту, яка зараз в в min то min буде дорывнювати їй min = sumdiagonal; } } return min; // повертаємо значення до MAIN } ТЕСТУВАННЯ При n = 4; 1. Матриця 4х4: 9 8 7 6 4 3 5 6 7 8 4 6 Результат: 1. 95 + 2. 6 +
2. Матриця 4х4: 22 44 66 88 54 67 78 89 98 65 44 32 54 88 99 23 Результат: 1. 1011 + 2. 22 + При n = 3; 3. Матриця 3х3: 8 6 3 4 6 5 3 7 8 Результат: 3. 50 + 4. 8 +
4. Матриця 3х3: -54 32 -76 52 57 63 66 346 76 Результат: 5. 435 + 6. 54 + При введенні помилкових даних ми бачимо: “Try again” Програма працює відмінно!
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |