Imi puteti explica, va rog, cum se rezolva aceasta problema
Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (1≤n≤100)şi apoi
elementele unui tablou bidimensional cu n linii şi n coloane, care memorează numere naturale cu cel
mult 9 cifre fiecare; programul afişează pe ecran acele valori din tablou care sunt strict mai mici
decât toate elementele cu care se învecinează direct (aflate pe aceeaşi linie dar pe o coloană
alăturată sau pe aceeaşi coloană dar pe o linie alăturată), ca în exemplu. Numerele afişate vor fi
separate prin câte un spaţiu.
Exemplu: pentru n=4 şi tabloul alăturat se afişează numerele: 2 0 (2 se învecinează direct cu 4, 3, 6 şi
9, şi este mai mic decât acestea, iar 0 se învecinează direct cu 6, 9 şi 1 şi este mai mic decât acestea).
5 4 7 9
6 2 3 4
0 9 8 5
1 3 8 6
Indicatie: deoarece elementele de pe chenarul matricei au 3 sau 2 vecini (elementele din colturi),
pentru a nu face teste suplimentare, bordam matricea cu valori convenabile astfel incat sa nu
influenteze rezultatul calcului, de ex. 1000000000.
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include<iostream>
using namespace std;
int main()
{
int n,a[101][101];
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
for(int i=0;i<=n+1;i++)
{
a[0][i]=1000000000;//deasupra
a[n+1][i]=1000000000;//dedesupt
a[i][0]=1000000000;//lateral stanga
a[i][n+1]=1000000000;//lateral dreapta
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]<a[i+1][j] && a[i][j]<a[i-1][j] && a[i][j]<a[i][j+1] && a[i][j]<a[i][j-1])//pozittiile corespunzatoare
cout<<a[i][j]<<" ";
return 0;
}
Explicație:
anaorena123:
Stii sa ma ajuti si la aceasta?
numere întregi să se afișeze numărul de elemente „șa” din matrice. Un element A(i,j) din matrice se
numește element „șa” dacă este maximul de pe coloana j si minimul de pe linia i sau invers.
Exemplu: pentru n=2, m=6 și matricea de mai jos se va afișa valoarea 2 (elementele șa sunt a12 si
a25).
3
7 1 6 3 8 5)
int nr_sa (int a[100][100],int n,int m)
{
int k=0,i,j,ml,mc,l1;
for(i=0;i {
ml=a[i][0];
for(j=0;j if(a[i][j]>ml)
ml=a[i][j];
for(j=0;j if(a[i][j]==ml)
{
mc=a[0][j];
for(l1=0;l1 if(a[l1][j] mc=a[l1][j];
if(mc==ml)
k++;
}
}
for(i=0;i {
ml=a[i][0];
for(j=0;j if(a[i][j] ml=a[i][j];
for(j=0;j if(a[i][j]==ml)
{
mc=a[0][j];
for(l1=0;l1 if(a[l1][j]>mc)
mc=a[l1][j];
if(mc==ml)
k++;
}
}
return k;
}
Alte întrebări interesante
Engleza,
8 ani în urmă
Evaluare Națională: Matematică,
8 ani în urmă
Geografie,
8 ani în urmă
Limba română,
9 ani în urmă
Biologie,
9 ani în urmă