Buna ! Am o intrebare . aceasta este cerinta :
Se dă o matrice m cu N linii și N coloane, și două numere i și j reprezentând poziția în matrice a primului element al unei paralele la diagonala principală. Să se afișeze toate elementele de sus în jos de pe acea paralelă la diagonală.
Date de intrare
De pe prima linie se citesc la tastatură numărul N. De pe următoarele N linii se citesc N numere naturale care reprezintă coordonatele matricei. De pe ultima linie se citesc numerele i și j.
Date de ieșire
Programul va afișa pe ecran un șir de numere separate prin spații, reprezentând elementele de pe paralela la diagonală.
Cum ar trebui sa scriu codul ? Niste idei va rog , multumesc !
Răspunsuri la întrebare
Răspuns de
2
Răspuns:
Explicație:
00 01 02 03 04 05
10 11 12 13 14 15
20 21 22 23 24 25
30 31 32 33 34 35
40 41 42 43 44 45
50 51 52 53 54 55
Am scris perechile de indici a elementelor matricei. Dacă se sune că se dă perechia i,j a poziţiei primului element de pe o paralelă la diagonala principală, deci elementul poate fi pe prima linie (unde i<j) sau pe prima coloană (unde i>j). Să luăm ca exemplu (i, j) = 2,0. Observăm că elementele pe care trebuie să le afişem sunt 20 31 42 53.
Se observă că ambii indici cresc cu o unitate cât i şi j sunt mai mici ca n, la exemplul nostru n=6 şi indexarea e de la 0.
while (i<n && j<n)
{ cout << a[i++][j++] << " "; }
Alte întrebări interesante
Biologie,
8 ani în urmă
Studii sociale,
8 ani în urmă
Matematică,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
using namespace std ;
int main(){
int m[51][51];
int n,i,j,k;
cin>>m[i][j]; // aflam numarul de linii si de coloane
}
}
// citim diagonala paralela sub diagonala principala
for(k=1;k<=n;k++){
i=n;
j=k;
while(j>i){ // elementul este pe prima linie
cout<i++; // ambele elemente cresc cu o unitate
j++;
}
}
for(k=n-1;k>=1;k--){
j=n;
i=k;
while(i>j){ //elementul e pe prima coloana
cout<i++; // crestem elementele cu o unitate
j++;
}
}
return 0;
}