Cerința
Se consideră o matrice pătratică cu n linii şi n coloane şi elemente numere naturale. Să se modifice matricea în felul următor: toate elementele de pe liniile care conţin valoare maximă din matrice vor fi mărite cu valoarea minimă din matrice.
Am nevoie de această problemă urgent!
Dau Coroană!
Date de intrare
Fișierul de intrare matrice6.in conține pe prima linie numărul n, iar următoarele n linii câte n numere naturale, reprezentând elementele matricei.
Date de ieșire
Fișierul de ieșire matrice6.out va conține matricea modificată, câte o linie a matricei pe o linie a fişierului, elementele fiecărei linii fiind separate prin exact un spaţiu.
Restricții și precizări
1 ≤ n ≤ 100
elementele matricei vor fi mai mici decât 1 000 000 000
Exemplu
matrice6.in
4
2 5 3 2
2 2 4 4
3 2 2 2
5 3 5 2
matrice6.out
4 7 5 4
2 2 4 4
3 2 2 2
7 5 7 4
Am nevoie de această problemă urgent!
Dau Coroană!
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("matrice6.in");
ofstream g("matrice6.out");
int n,i,j,x,minim=1000000001,maxim=-1000000001,a[101][101],k,ok;
int main()
{
f>>n; //citeste n din fisier
f>>a[1][1]; //citeste primul element
minim=a[1][1]; //initializez minimul cu primul element
maxim=a[1][1]; //initializez maximul cu primul element
for(j=2;j<=n;j++) {f>>a[1][j]; //citim restul elementelor de pe prima linie si le alocam pozitiile corespunzatoare
if(a[1][j]>maxim) maxim=a[1][j];
if(a[1][j]<minim) minim=a[1][j];
}
for(i=2;i<=n;i++)
for(j=1;j<=n;j++) {f>>a[i][j]; //citim restul elementelor din fisier si le alocam pozitiile corespunzatoare
if(a[i][j]>maxim) maxim=a[i][j];
if(a[i][j]<minim) minim=a[i][j];
}
for(i=1;i<=n;i++){ok=1;
for(j=1;j<=n;j++)
{if(a[i][j]==maxim && ok==1) {for(k=1;k<=n;k++) a[i][k]=a[i][k]+minim; //cautam elementele cu valoare maxim si adauga valoare minima tuturor elementelor de pe aceea linie
ok=0;} //folosim un ok pentru a adauga valoarea minima pe o linie o singura data avand in vedere ca putem avea de mai multe ori valoarea maxima pe o linie
}
for(k=1;k<=n;k++) g<<a[i][k]<<" ";
g<<endl;}
}
Explicație: