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

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 Levi20
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?
anaorena123: Fiind date două numere naturale n și m (0 < n,m ≤ 100) și o matrice A(n , m) avȃnd elemente
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
anaorena123: A=(5 8 4 9 3
anaorena123: A=(5 2 8 4 9 3
7 1 6 3 8 5)
Levi20: int i,j,n,m,a[100][100];
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;
}
Levi20: Ti-am facut o functie
anaorena123: Nu obtin niciun rezultat...
Levi20: Pai e un subprogram
Levi20: Intai citesti matricea in main.. dupa care afisezi ce returneaza functia
anaorena123: Nu am invatat inca functiile, multumesc frumos oricum pentru tot
Alte întrebări interesante