Advertisement
MeehoweCK

Untitled

Jun 18th, 2024
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4.  
  5. const int ROZMIAR = 6;
  6.  
  7. void wypelni(double tab[][ROZMIAR])
  8. {
  9.     for (int i = 0; i < ROZMIAR; ++i)
  10.     {
  11.         for (int j = 0; j < ROZMIAR; ++j)
  12.         {
  13.             tab[i][j] = 10.0 * rand() / RAND_MAX;
  14.         }
  15.     }
  16. }
  17.  
  18. void wypisz(double tab[][ROZMIAR])
  19. {
  20.     for (int i = 0; i < ROZMIAR; ++i)
  21.     {
  22.         for (int j = 0; j < ROZMIAR; ++j)
  23.         {
  24.             std::cout << tab[i][j] << '\t';
  25.         }
  26.         std::cout << std::endl;
  27.     }
  28. }
  29.  
  30. void znajdz_i_zmien_przekatne(double tab[][ROZMIAR]) {
  31.     double najwieksza_1 = tab[0][0], najwieksza_2 = tab[1][1];
  32.     auto w1{ 0 }, w2{ 1 }, k1{ 0 }, k2{ 1 };
  33.     if (najwieksza_2 > najwieksza_1) {
  34.         std::swap(najwieksza_1, najwieksza_2);
  35.         std::swap(w1, w2);
  36.         std::swap(k1, k2);
  37.     }
  38.  
  39.     for (auto i{ 2 }; i < ROZMIAR; ++i) {
  40.         if (tab[i][i] > najwieksza_1) {
  41.             najwieksza_2 = najwieksza_1;
  42.             w2 = w1;
  43.             k2 = k1;
  44.             najwieksza_1 = tab[i][i];
  45.             w1 = i;
  46.             k1 = i;
  47.         }
  48.         else if (tab[i][i] > najwieksza_2) {
  49.             najwieksza_2 = tab[i][i];
  50.             k2 = i;
  51.             w2 = i;
  52.         }
  53.     }
  54.     const auto K{ ROZMIAR - 1 };
  55.     for (auto i{ 0 }; i < ROZMIAR; ++i) {
  56.         if (tab[i][K - i] > najwieksza_1) {
  57.             najwieksza_2 = najwieksza_1;
  58.             w2 = w1;
  59.             k2 = k1;
  60.             najwieksza_1 = tab[i][K - i];
  61.             w1 = i;
  62.             k1 = K - i;
  63.         }
  64.         else if (tab[i][K - i] > najwieksza_2) {
  65.             najwieksza_2 = tab[i][K - i];
  66.             k2 = K - i;
  67.             w2 = i;
  68.         }
  69.     }
  70.  
  71.     /*for (int i = 0; i < ROZMIAR; ++i) {
  72.         if (tab[i][i] > najwieksza_1) {
  73.             najwieksza_2 = najwieksza_1;
  74.             w_max = w_min; k_max = k_min;
  75.             najwieksza_1 = tab[i][i];
  76.             w_min = i; k_min = i;
  77.         }
  78.         else if (tab[i][i] > najwieksza_2) {
  79.             najwieksza_2 = tab[i][i];
  80.             w_max = i; k_max = i;
  81.         }
  82.         if (tab[i][ROZMIAR - 1 - i] > najwieksza_1) {
  83.             najwieksza_2 = najwieksza_1;
  84.             w_max = w_min; k_max = k_min;
  85.             najwieksza_1 = tab[i][ROZMIAR - 1 - i];
  86.             w_min = i; k_min = ROZMIAR - 1 - i;
  87.         }
  88.         else if (tab[i][ROZMIAR - 1 - i] > najwieksza_2) {
  89.             najwieksza_2 = tab[i][ROZMIAR - 1 - i];
  90.             w_max = i; k_max = ROZMIAR - 1 - i;
  91.         }
  92.     }*/
  93.  
  94.  
  95.     std::cout << "Najwieksza wartosc na przekatnych: " << najwieksza_1 << " na polu [" << w1 << "][" << k1 << "]" << std::endl;
  96.     std::cout << "Druga najwieksza wartosc na przekatnych: " << najwieksza_2 << " na polu [" << w2 << "][" << k2 << "]" << std::endl;
  97.  
  98.     tab[w2][k2] = 0;
  99.     tab[w1][k1] = 0;
  100.     std::cout << "\n liczby zamienione na 0:\n";
  101.     wypisz(tab);
  102. }
  103.  
  104.  
  105.  
  106.  
  107. void wartoscMinMax(double tab[][ROZMIAR])
  108. {
  109.     auto najmniejsza{ tab[0][0] }, najwieksza{ tab[0][0] };
  110.     auto w_min{ 0 }, w_max{ 0 }, k_min{ 0 }, k_max{ 0 };
  111.     // sprawdzenie pozostałych elementów zerowego wiersza:
  112.     for (int i{ 1 }; i < ROZMIAR; ++i) {
  113.         if (tab[0][i] < najmniejsza) {
  114.             najmniejsza = tab[0][i];
  115.             k_min = i;
  116.         }
  117.         else if (tab[0][i] > najwieksza) {
  118.             najwieksza = tab[0][i];
  119.             k_max = i;
  120.         }
  121.     }
  122.     // sprawdzenie pozostałych elementów ostatniej kolumny:
  123.     const auto k{ ROZMIAR - 1 };
  124.     for (int i{ 1 }; i < ROZMIAR; ++i) {
  125.         if (tab[i][k] < najmniejsza) {
  126.             najmniejsza = tab[i][k];
  127.             k_min = k;
  128.             w_min = i;
  129.         }
  130.         else if (tab[i][k] > najwieksza) {
  131.             najwieksza = tab[i][k];
  132.             k_max = k;
  133.             w_max = i;
  134.         }
  135.     }
  136.     // sprawdzenie pozostałych elementów ostatniego wiersza:
  137.     for (int i{ 0 }; i < k; ++i) {
  138.         if (tab[k][i] < najmniejsza) {
  139.             najmniejsza = tab[k][i];
  140.             k_min = i;
  141.             w_min = k;
  142.         }
  143.         else if (tab[k][i] > najwieksza) {
  144.             najwieksza = tab[k][i];
  145.             k_max = i;
  146.             w_max = k;
  147.         }
  148.     }
  149.     // sprawdzenie pozostałych elementów zerowej kolumny:
  150.     for (int i{ 1 }; i < k; ++i) {
  151.         if (tab[i][0] < najmniejsza) {
  152.             najmniejsza = tab[i][0];
  153.             k_min = 0;
  154.             w_min = i;
  155.         }
  156.         else if (tab[i][0] > najwieksza) {
  157.             najwieksza = tab[i][0];
  158.             k_max = 0;
  159.             w_max = i;
  160.         }
  161.     }
  162.     std::cout << "Najwieksza wartosc na obwodzie znajduje sie na polu [" << w_max << "][" << k_max << "] i wynosi " << najwieksza << std::endl;
  163.     std::cout << "Najmniejsza wartosc na obwodzie znajduje sie na polu [" << w_min << "][" << k_min << "] i wynosi " << najmniejsza << std::endl;
  164.     double suma = najmniejsza + najwieksza;
  165.     tab[w_min][k_min] = suma;
  166.     tab[w_max][k_max] = suma;
  167.     std::cout << "\nsuma tych liczb:\n";
  168.     //wypisz(tab);
  169. }
  170.  
  171. int main()
  172. {
  173.     double tab2w[ROZMIAR][ROZMIAR];
  174.     srand(time(nullptr));
  175.     wypelni(tab2w);
  176.     wypisz(tab2w);
  177.     znajdz_i_zmien_przekatne(tab2w);
  178.     wartoscMinMax(tab2w);
  179.     wypisz(tab2w);
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement