АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Кодування програми

Читайте также:
  1. Арифметичне кодування
  2. Визначення розміру страхового відшкодування по КАСКО
  3. Відшкодування збитків у сфері господарювання
  4. ВІДШКОДУВАННЯ ЗБИТКІВ У СФЕРІ ГОСПОДАРЮВАННЯ
  5. Відшкодування збитків у сфері господарювання.
  6. Відшкодування шкоди працівникам у разі ушкодження їх здоров’я.
  7. Вопрос Поняття відшкодування збитків.
  8. Двовимірне кодування довжин серій
  9. Державне регулювання зайнятості: сутність, крива Філіпса у короткостроковоому та довгостроковому періодах, деожавні програми регулювання зайнятості.
  10. Джерела комунікації та процес кодування
  11. для включення до програми комплексного іспиту
  12. Додаток 1. Лістинг програми

#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 5 4 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.011 сек.)