Informatică, întrebare adresată de mihaelaelenamihai, 9 ani în urmă

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

Răspuns de 1Viserys
0

#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

Alte întrebări interesante