#include <iostream> #include <ctime> #include <cstdlib> const int ROZMIAR = 6; void wypelni(double tab[][ROZMIAR]) { for (int i = 0; i < ROZMIAR; ++i) { for (int j = 0; j < ROZMIAR; ++j) { tab[i][j] = 10.0 * rand() / RAND_MAX; } } } void wypisz(double tab[][ROZMIAR]) { for (int i = 0; i < ROZMIAR; ++i) { for (int j = 0; j < ROZMIAR; ++j) { std::cout << tab[i][j] << '\t'; } std::cout << std::endl; } } void znajdz_i_zmien_przekatne(double tab[][ROZMIAR]) { double najwieksza_1 = tab[0][0], najwieksza_2 = tab[1][1]; auto w1{ 0 }, w2{ 1 }, k1{ 0 }, k2{ 1 }; if (najwieksza_2 > najwieksza_1) { std::swap(najwieksza_1, najwieksza_2); std::swap(w1, w2); std::swap(k1, k2); } for (auto i{ 2 }; i < ROZMIAR; ++i) { if (tab[i][i] > najwieksza_1) { najwieksza_2 = najwieksza_1; w2 = w1; k2 = k1; najwieksza_1 = tab[i][i]; w1 = i; k1 = i; } else if (tab[i][i] > najwieksza_2) { najwieksza_2 = tab[i][i]; k2 = i; w2 = i; } } const auto K{ ROZMIAR - 1 }; for (auto i{ 0 }; i < ROZMIAR; ++i) { if (tab[i][K - i] > najwieksza_1) { najwieksza_2 = najwieksza_1; w2 = w1; k2 = k1; najwieksza_1 = tab[i][K - i]; w1 = i; k1 = K - i; } else if (tab[i][K - i] > najwieksza_2) { najwieksza_2 = tab[i][K - i]; k2 = K - i; w2 = i; } } /*for (int i = 0; i < ROZMIAR; ++i) { if (tab[i][i] > najwieksza_1) { najwieksza_2 = najwieksza_1; w_max = w_min; k_max = k_min; najwieksza_1 = tab[i][i]; w_min = i; k_min = i; } else if (tab[i][i] > najwieksza_2) { najwieksza_2 = tab[i][i]; w_max = i; k_max = i; } if (tab[i][ROZMIAR - 1 - i] > najwieksza_1) { najwieksza_2 = najwieksza_1; w_max = w_min; k_max = k_min; najwieksza_1 = tab[i][ROZMIAR - 1 - i]; w_min = i; k_min = ROZMIAR - 1 - i; } else if (tab[i][ROZMIAR - 1 - i] > najwieksza_2) { najwieksza_2 = tab[i][ROZMIAR - 1 - i]; w_max = i; k_max = ROZMIAR - 1 - i; } }*/ std::cout << "Najwieksza wartosc na przekatnych: " << najwieksza_1 << " na polu [" << w1 << "][" << k1 << "]" << std::endl; std::cout << "Druga najwieksza wartosc na przekatnych: " << najwieksza_2 << " na polu [" << w2 << "][" << k2 << "]" << std::endl; tab[w2][k2] = 0; tab[w1][k1] = 0; std::cout << "\n liczby zamienione na 0:\n"; wypisz(tab); } void wartoscMinMax(double tab[][ROZMIAR]) { auto najmniejsza{ tab[0][0] }, najwieksza{ tab[0][0] }; auto w_min{ 0 }, w_max{ 0 }, k_min{ 0 }, k_max{ 0 }; // sprawdzenie pozostałych elementów zerowego wiersza: for (int i{ 1 }; i < ROZMIAR; ++i) { if (tab[0][i] < najmniejsza) { najmniejsza = tab[0][i]; k_min = i; } else if (tab[0][i] > najwieksza) { najwieksza = tab[0][i]; k_max = i; } } // sprawdzenie pozostałych elementów ostatniej kolumny: const auto k{ ROZMIAR - 1 }; for (int i{ 1 }; i < ROZMIAR; ++i) { if (tab[i][k] < najmniejsza) { najmniejsza = tab[i][k]; k_min = k; w_min = i; } else if (tab[i][k] > najwieksza) { najwieksza = tab[i][k]; k_max = k; w_max = i; } } // sprawdzenie pozostałych elementów ostatniego wiersza: for (int i{ 0 }; i < k; ++i) { if (tab[k][i] < najmniejsza) { najmniejsza = tab[k][i]; k_min = i; w_min = k; } else if (tab[k][i] > najwieksza) { najwieksza = tab[k][i]; k_max = i; w_max = k; } } // sprawdzenie pozostałych elementów zerowej kolumny: for (int i{ 1 }; i < k; ++i) { if (tab[i][0] < najmniejsza) { najmniejsza = tab[i][0]; k_min = 0; w_min = i; } else if (tab[i][0] > najwieksza) { najwieksza = tab[i][0]; k_max = 0; w_max = i; } } std::cout << "Najwieksza wartosc na obwodzie znajduje sie na polu [" << w_max << "][" << k_max << "] i wynosi " << najwieksza << std::endl; std::cout << "Najmniejsza wartosc na obwodzie znajduje sie na polu [" << w_min << "][" << k_min << "] i wynosi " << najmniejsza << std::endl; double suma = najmniejsza + najwieksza; tab[w_min][k_min] = suma; tab[w_max][k_max] = suma; std::cout << "\nsuma tych liczb:\n"; //wypisz(tab); } int main() { double tab2w[ROZMIAR][ROZMIAR]; srand(time(nullptr)); wypelni(tab2w); wypisz(tab2w); znajdz_i_zmien_przekatne(tab2w); wartoscMinMax(tab2w); wypisz(tab2w); }