Fişierul date.in conţine pe prima linie numărul n, natural nenul (2<n<20), ce reprezintă
numărul de linii ale unei matrice pătratice A. Pe fiecare din următoarele n linii, sunt scrise
câte n numere naturale, formate din cel mult 4 cifre, separate prin câte un spaţiu,
reprezentând valorile elementelor matricei A.
Să se scrie un program, în limbajul Pascal/C/C++, care:
a) afişează pe ecran, în linie, separate prin câte un spaţiu, elementele de pe ultima coloană a
matricei A;
b) afişează pe următoarea linie a ecranului numărul elementelor pare situate deasupra
diagonalei secundare a matricei;
c) înlocuiește fiecare element din matricea A cu suma cifrelor sale și scrie în fişierul atestat.out
matricea nou formată.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("atestat.out");
int A[20][20], i, j, k, suma, x, n;
int main ()
{
fin >> n;
for (i = 1; i <= n; i ++)
for (j = 1; j <= n; j ++)
fin >> A[i][j];
//subpunctul a:
for (i = 1; i <= n; i ++) cout << A[i][n] << " ";
cout << endl;
//subpunctul b:
/*elementele de pe coloana secundara sunt de tipul A[i][n-i+1]*/
/*elementele de deasupra sunt de tipul A[i][j] cu j<n-i+1/*
/*in k se vor retine nr de nr pare de deasupra diag secundare*/
for (i = 1; i <= n; i ++)
for (j = 1; j < n-i+1; j ++)
if (A[i][j]%2 == 0) k++;
cout << k;
//subpunctul c:
for (i = 1; i <= n; i ++)
for (j = 1; j <= n; j ++) {
x = A[i][j];
suma = 0;
while (x > 0) {
suma = suma + x%10;
x = x/10;
}
A[i][j] = suma;
}
for (i = 1; i <= n; i ++) {
for (j = 1; j <= n; j ++) fout << A[i][j] << " ";
fout << endl;
}
return 0;
}
Explicație:
Exemplu:
in fiesierul date.in:
5
12 3 45 6 7
13 9 76 1 0
67 4 90 3 8
79 5 35 8 4
78 5 33 7 9
pe ecran se afiseaza:
7 0 8 4 9
4 (numerele 12, 6, 76 si 4; diagonala e formata din 78 5 90 1 7)
in fisierul atestat.out:
3 3 9 6 7
4 9 13 1 0
13 4 9 3 8
16 5 8 8 4
15 5 6 7 9