Advertisement
PIBogdanov

DZi-3

Jun 2nd, 2023
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.79 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <math.h>
  4. #include <locale>
  5.  
  6. using namespace std;
  7.  
  8. void vavedi(int n, int m, int mas[20][20]) // дефиниране на процедура за въвеждане с 3 цели формални параметъра, един от тях е двумерен масив с размерност 20 по 20
  9. {
  10.     for (int i = 0; i < n; i++) // обхождане на редовете
  11.         for (int j = 0; j < m; j++) // обхождане на колоните
  12.         {
  13.             cout << "mas[" << i << ", " << j << "] = "; // извеждане на текст с името на двумерния масив и текущия му елемент
  14.             cin >> mas[i][j]; // въвеждане на стойност на дадения елемента на двумерния масив
  15.         }
  16. }
  17.  
  18. void izvedi(int n, int m, int mas[20][20]) // дефиниране на процедура за извеждане с 3 цели формални параметъра, един от тях е двумерен масив с размерност 20 по 20
  19. {
  20.     for (int i = 0; i < n; i++) // обхождане на редовете
  21.     {
  22.         for (int j = 0; j < m; j++)  // обхождане на колоните
  23.             cout << setw(8) << mas[i][j]; // извеждане на елементите на двумерния масива с 8 знака надясно
  24.  
  25.             cout << "\n"; // нов ред
  26.         }
  27. }
  28.  
  29. double sredno(int n, int m, int mas[20][20]) // дефиниране на функция за намиране на средно аритметично на елементите с 3 цели формални параметъра, един от тях е двумерен масив с размерност 20 по 20
  30. {
  31.     double Sr = 0; // деклариране на реална променлива с начална стойност 0, която служи за намиране на средно аритметично
  32.  
  33.     for (int i = 0; i < n; i++) // обхождане на редовете
  34.         for (int j = 0; j < m; j++) // обхождане на колоните
  35.             if (i == j) // проверка дали индексите съвпадат
  36.                 Sr = Sr + mas[i][j]; // присвояване на стойност
  37.  
  38.                 Sr = Sr / m; // намиране на средно аритметично, като се дели по колоните
  39.  
  40.                 return Sr; // връщане на резултат
  41. }
  42.  
  43. int Br(int n, int m, int mas[20][20]) // дефиниране на функция за намиране на броя четни елементи с 3 цели формални параметъра, един от тях е двумерен масив с размерност 20 по 20
  44. {
  45.     int br = 0; // деклариране на цяла променлива с начална стойност 0, която служи за брояч
  46.  
  47.     for (int i = 0; i < n; i++) // обхождане на редовете
  48.         for (int j = i; j < m; j++) // обхождане на колоните
  49.             if (mas[i][j] % 2 == 0) // проверка за стойността на дадените елементи са четни
  50.                 br++; // увеличаване на стойността с 1
  51.  
  52.     return br; // връщане на резултат
  53. }
  54.  
  55. void Maksimalno(int n, int m, int mas[20][20]) // дефиниране на процедура за намиране на елемент с най-голяма стойност на ред с 3 цели формални параметъра, един от тях е двумерен масив с размерност 20 по 20
  56. {
  57.     int Mr[20]; // деклариране на цял едномерен масив с размерност 20, който служи за запазване на най-голямата стойност на всеки ред
  58.  
  59.     for (int i = 0; i < n; i++) // обхождане на редовете
  60.     {
  61.         Mr[i] = mas[i][0]; // присвояване на стойност
  62.  
  63.         for (int j = 0; j < m; j++) // обхождане на колоните
  64.             if (Mr[i] < mas[i][j]) // проверка дали елемента на едномерния масив е по-малък от този на двумерния
  65.                 Mr[i] = mas[i][j]; // присвояване на стойност
  66.             cout << setw(5) << Mr[i]; // извеждане на елементите на едномерния масив с 5 знака надясно
  67.     }
  68. }
  69.  
  70. void Indeks(int n, int m, int mas[20][20]) // дефиниране на процедура за намиране на индексите, чиято стойност съвпада с "x", с 3 цели формални параметъра, един от тях е двумерен масив с размерност 20 по 20
  71. {
  72.     int x; // деклариране на цяла променлива
  73.  
  74.     cout << "x = "; // извеждане на текст
  75.     cin >> x; // въвеждане на стойност
  76.  
  77.     cout << "\n"; // нов ред
  78.  
  79.     for (int i = 0; i < n; i++) // обхождане на редовете
  80.         for (int j = 0; j < m; j++) // обхождане на колоните
  81.             if (mas[i][j] == x) // проверка дали стойносттите на дадените елементи на двумерния масив съвпадат с тази на цялата променлива
  82.                 cout << "ред " << i + 1 << ", колона " << j + 1 << "." << "\n"; // извеждане на текст, който уточнява на кой ред и колона стойността съвпада
  83. }
  84.  
  85.  
  86. int main() // главна функция
  87. {
  88.     setlocale(LC_ALL, "Bulgarian"); // функция, която задава на програмата да използва български език от системата
  89.  
  90.     int M[20][20], Mr[20], n, m; // деклариране на цял двумерен масив с размерност 20 по 20, цял едномерен масив с размерност 20 и 2 цели променливи
  91.  
  92.     cout << "Въведи брой редове от 1 до 20." << "\n";
  93.     cin >> n; // въвеждане на стойност за редовете
  94.  
  95.     cout << "\n"; // нов ред
  96.  
  97.     cout << "Въведи брой колони от 1 до 20." << "\n";
  98.     cin >> m; // въвеждане на стойност за колоните
  99.  
  100.     cout << "\n"; // нов ред
  101.  
  102.     vavedi(n, m, M); // извикване на процедурата за въвеждане
  103.  
  104.     cout << "\n"; // нов ред
  105.  
  106.     izvedi(n, m, M); // извикване на процедурата за извеждане
  107.  
  108.     cout << "\n" << "\n"; // 2 нови реда
  109.  
  110.     cout << "*****************************************************" << "\n" << "\n";
  111.  
  112.     cout << "Извеждане на масива над главния диагонал." << "\n";
  113.  
  114.     for (int i = 0; i < n; i++) // обхождане на редовете
  115.     {
  116.         for (int j = 0; j < m; j++) // обхождане на колоните
  117.             if (j < i) // проверка дали индекс "j" е по-малък от "i"
  118.                 cout << "        "; // извеждане на празен ред
  119.  
  120.             else
  121.                 cout << setw(5) << M[i][j]; // извеждане на елементите на двумерния масив с 5 знака надясно
  122.  
  123.         cout << "\n"; // нов ред
  124.     }
  125.  
  126.     cout << "Изчисляване на средно аритметично на елементите по главния диагонал." << "\n";
  127.  
  128.     cout << "Средното е " << sredno(n, m, M) << "." << "\n" << "\n"; // извикване на функцията за средно аритметично
  129.  
  130.     cout << "*****************************************************" << "\n" << "\n";
  131.  
  132.     cout << "Намиране на броя четните елемнти над главния диагонал." << "\n";
  133.  
  134.     cout << "Броят е " << Br(n, m, M) << "." << "\n" << "\n"; // извикване на функцията за броя четни елементи
  135.  
  136.     cout << "*****************************************************" << "\n" << "\n";
  137.  
  138.     cout << "Намиране на максималната стойност по редове." << "\n";
  139.  
  140.     Maksimalno(n, m, M); // извикване на процедурата за намиране на елемент с най-голяма стойност на ред
  141.  
  142.     cout << "\n" << "\n"; // 2 нови реда
  143.  
  144.     cout << "*****************************************************" << "\n" << "\n";
  145.  
  146.     cout << "Извеждане на индексите, чиято стойност съвпада с тази на числото \"x\"." << "\n";
  147.  
  148.     Indeks(n, m, M); // извикване на процедурата за намиране на индексите, чиято стойност съвпада с "x"
  149.  
  150.     return 0; // край на програмата
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement