Informatică, întrebare adresată de msmb, 8 ani în urmă

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 de SergiuLink
1

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:

Alte întrebări interesante