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.
Eu am incercat sa fac in felul urmator : Am calculat minimul si maximul dar dupa imi marea doar maximul de pe linie, nu toata linia., folosind algoritmul acesta
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]==ma)
a[i][j]=a[i][j]+mi;
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int n, i,j,elmin,elmax, a[30][30], L[30]={0};
cout << "n="; cin >> n;
cout << "introdu elementele matricei, " << n << " linii cu cate" << endl;
cout << n << " elemente, separate prin spatiu" << endl;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cin >> a[i][j];
}
elmin=a[0][0]; elmax=a[0][0];
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
if (a[i][j]>elmax) elmax=a[i][j];
if (a[i][j]<elmin) elmin=a[i][j];
}
}
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
if (a[i][j]==elmax)
{
L[i]=1; break;
}
}
for (i=0; i<n; i++)
{
if (L[i]==1)
{
for (j=0; j<n; j++)
{
a[i][j]=a[i][j]+elmin;
}
}
}
cout << "Matricea modificata:" << endl;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cout << a[i][j] << " ";
cout << endl;
}
return 0;
}
Explicație:
codul nu e scurt, dar am făcut să fie mai clar...
1) introduc datele
2) aflu elementul maximal şi elementul minimal
3) într-un veczor liniar L, memorizez liniile ce conţin maximul
4) parcurg matricea şi dacă L[i]==1 (adică linia conţine elementul maximal) parcurg această linie cu creşterea fiecărui element al ei cu elmin
5) afişare matrice modificată