Se consideră un tablou cu m linii și n coloane cu elemente numere întregi (1 < m, n < 30). Să se scrie tabloul obținut din tabloul inițial în care elementele egale cu valoarea maximă a elementelor tabloului sunt înlocuite cu valoarea minimă a elementelor tabloului și reciproc. Datele de intrare se citesc dintr-un fișier text, rezultatul se scrie în alt fișier text. Se vor folosi cel puțin două subprograme în afara subprogramelor pentru citirea datelor și afișarea rezultatelor.
Răspunsuri la întrebare
#include <iostream>
#include <fstream>
using namespace std;
int M[31][31], m, n;
void CitireDate()
{
ifstream f;
f.open("exemplu.in"); //numele fisierului de intrare
f>>m>>n;
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
f>>M[i][j];
f.close();
}
void AfisareDate()
{
ofstream o;
o.open("exemplu.out");
for(int i=0; i<m; i++)
{for(int j=0; j<n; j++)
o<<M[i][j]<<" ";
o<<endl;}
o.close();
}
int gasireMaxim()
{
int max=M[0][0];
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
if(max<M[i][j]) max=M[i][j];
return max;
}
int gasireMinim()
{
int min=M[0][0];
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
if(min>M[i][j]) min=M[i][j];
return min;
}
void Inlocuire(int min, int max)
{
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
{
if(M[i][j]==min) M[i][j]=max;
else if (M[i][j]==max) M[i][j]=min;
}
}
int main()
{
CitireDate();
int max=gasireMaxim();
int min=gasireMinim();
Inlocuire(min, max);
AfisareDate();
return 0;
}
//Programul a fost testat in prealabil in CodeBlocks