Parcurgerea matricelor normale
|
parcurgerea matricelor patratice
|
2) Scrieti un program care citeste de la tastatura un numar natural n ( 1 ≤ n ≤ 20 ) si apoi elementele unui tablou bidimensional cu n linii si n coloane, care memoreaza numere naturale. Programul afiseaza pe ecran numarul de elemente din tablou care sunt strict mai mari decat toate elementele cu care se invecineaza direct (aflate pe aceeasi linie dar pe o coloana alaturata sau pe aceeasi coloana dar pe o linie alaturata). |
#include <iostream>
using namespace std; long a[1001][1001],n,i,j,s1,s2,r; int main() { cin>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) cin>>a[i][j]; s1=0; s2=0; for(i=1;i<=n;i++) //Parcurgem matricea pe linii for(j=1;j<=n;j++) //si pe coloane. if(i>j) //Se verifica daca exista elemente sub diagonala principala. s1+=a[i][j]; //Daca da, atunci se efectueaza suma acestor elemente. else //In cazul opus: if(i<j) //Se verifica daca exista elemente deasupra diagonalei principale. s2+=a[i][j]; //Daca da, atunci se efectueaza suma acestor elemente. //Acest algoritm este utilizat pentru a calcula cel mai mare divizor comun. In cazul de fata, se calculeaza cel mai mare divizor comun dintre cele 2 sume calculate mai sus. while(s2!=0) { r=s1%s2; s1=s2; s2=r; } cout<<s1; return 0; } |
#include <iostream>
using namespace std; long a[1001][1001],n,i,j,nr; int main() { cin>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) cin>>a[i][j]; nr=0; for(i=1;i<=n;i++) //Parcurgem matricea pe linii for(j=1;j<=n;j++) //si pe coloane. if(a[i][j]>a[i-1][j] && a[i][j]>a[i][j-1] && a[i][j]>a[i][j+1] && a[i][j]>a[i+1][j]) //Se verifica daca fiecare element al matricei este mai mare decat fiecare vecin al sau. nr++; //Daca da, se creste numarul de elemente care respecta aceasta conditie. cout<<nr; //Se afiseaza numarul de elemente. return 0; } |