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

. 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 de bobita25
1

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.

Alte întrebări interesante