. Se citeste o matrice patratica cu n linii si n coloane (n<=100), cu elemente numere naturale din intervalul [0,1000]. Calculati si afisati suma elementelor impare de deasupra diagonalei principala.
2. Fie a o matrice pătratică cu n linii și n coloane. Să se afișeze elementele din matrice care sunt palindrom.
3. Să se construiască matricea cu n linii și n coloane care are pe diagonala principală 1 și în rest 0.
4. Să se construiască matricea cu n linii și n coloane care are pe diagonala principală 1 și în rest fiecare element este egal cu suma indicilor.
Răspunsuri la întrebare
Răspuns:
1.
#include <iostream>
using namespace std;
int s;
int main() {
int n; cin >> n;
int a[n][n];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
cin >> a[i][j];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
{
if(j > i && a[i][j] % 2 == 1)
{
s += a[i][j];
}
}
cout << s;
return 0;
}
Explicație:
Zonele determinate de diagonale:
I.
Pe diagonala principala ⇒ i = j
Sub diagoanala principala ⇒ i > j
Deasupra diagonalei principale ⇒ i < j (cea folosita in aceasta problema)
II.
Pe diagonala secundara ⇒ j = n - i + 1
Sub diagonala secundara ⇒ j > n - i + 1
Deasupra diagonalei secundare ⇒ j < n - i + 1
2.
#include <iostream>
using namespace std;
int pal;
int main()
{
int n; cin >> n;
int a[n][n];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
cin >> a[i][j];
cout << endl;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
{
pal = 0;
int aux = a[i][j];
while(aux)
{
pal = pal * 10 + aux % 10;
aux /= 10;
}
if(pal == a[i][j])
cout << a[i][j] << " ";
}
return 0;
}
Explicație:
Un numar este palindom daca este egal cu rasturnatul sau.
Exemplu: 2332 este numar palindrom, deoarece rasturnatul sau este tot 2332.
3.
#include <iostream>
using namespace std;
int main()
{
int n; cin >> n;
int a[n][n];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
{
if(i == j)
a[i][j] = 1;
else a[i][j] = 0;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++)
cout << a[i][j] << " ";
cout << endl;
}
return 0;
}
Explicație:
Am folosit conditia ca un element sa fie situat pe diagonala principala (i =j).
4.
#include <iostream>
using namespace std;
int s;
int main()
{
int n; cin >> n;
int a[n][n];
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
{
if(i == j)
a[i][j] = 1;
else a[i][j] = i + j;
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
cout << a[i][j] << " ";
cout << endl;
}
return 0;
}
Explicație:
Aceeasi conditie pentru diagonala principala.
Daca elementul este situat in afara diagonalei principale, este egal cu suma indicilor, indicii fiind i si j, deci a[i][j] = i + j.