Se consideră tabloul A[1..n,1..m] de numere întregi, unde n şi m<=20. Să se scrie un program care schimbă cu locul linia ce conţine elementul maxim cu linia ce conţine elementul minim.
In Dev C++. Imi trebuie repede. Dau 60 de puncte.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <iomanip>
#include <vector>
#include <climits>
int main()
{
std::vector<std::vector<int>> tablou;
int n, m, numar, numarMin = INT_MAX, numarMax = INT_MIN, randMin, randMax;
std::cout << "n: ";
std::cin >> n;
std::cout << "m: ";
std::cin >> m;
tablou.reserve(m);
for (int i = 0; i < m; i++) {
std::cout << "Rând " << i + 1 << " (" << n << " numere): ";
std::vector<int> rand;
rand.reserve(n);
for (int j = 0; j < n; j++) {
std::cin >> numar;
rand.push_back(numar);
}
tablou.push_back(rand);
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (numarMin > tablou[i][j]) {
numarMin = tablou[i][j];
randMin = i;
}
if (numarMax < tablou[i][j]) {
numarMax = tablou[i][j];
randMax = i;
}
}
}
if (randMin != randMax) {
std::vector<int> temporar = tablou[randMin];
tablou[randMin] = tablou[randMax];
tablou[randMax] = temporar;
}
std::cout << "Tablou:" << std::endl;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
std::cout << std::setw(5) << tablou[i][j];
}
std::cout << std::endl;
}
}
Explicație: