III.2 testul 3 (antrenament) 2021
Subiectul al III-lea – Exerciţiul 2
| O sală de spectacole are mai multe rânduri de scaune, toate rândurile având acelas număr de locuri. O persoană poate rezerva mai multe locuri, dar cel mult câte unul pe rând. Configurația sălii este memorată ca un tablou bidimensional, în care prima coloană corespunde primului rând de scaune, iar ultima coloană corespunde ultimului rând de scaune. Locurile libere sunt notate cu 0, iar cele rezervate sunt notate cu numere naturale nenule, astfel încât toate locurile rezervate de o persoană sunt notate cu acelaș număr, iar cele rezervate de persoane distincte sunt notate cu numere distincte. Scrieți un program C/C++ care citește de la tastatură numerele naturale din intervalul [2, 20], m și n, apoi m*n numere naturale din intervalul [0, 400], elemente ale tabloului bidimensional cu m linii si O sală de spectacole are mai multe rânduri de scaune, toate rândurile având același număr de locuri. O persoană poate rezerva mai multe locuri, dar cel mult câte unul pe un rând. Configurația sălii este memorată ca un tablou bidimensional, în care prima coloană corespunde primului rând de scaune, iar ultima coloană corespunde ultimului rând de scaune. Locurile libere sunt notate cu 0, iar cele rezervate sunt notate cu numere naturale nenule, astfel încât toate locurile rezervate de o persoană sunt notate cu același număr, iar cele rezervate de persoane distincte sunt notate cu numere distincte. Scrieți un program C/C++ care citește de la tastatură numerele naturale din intervalul [2,20], m și n, apoi m∙n numere naturale din intervalul [0,400], elemente ale tabloului bidimensional cu m linii și n coloane, reprezentând configurația sălii. Programul verifică dacă există persoane care au rezervat locuri atât pe primul, cât și pe ultimul rând al sălii, și afișează pe ecran numerele cu care sunt notate aceste locuri, ca în exemplu. Numerele sunt afișate într-o ordine oarecare, separate prin câte un spațiu, iar dacă nu există astfel de locuri se afișează pe ecran masajul nu există. Exemplu: pentru m = 5, n = 4 și tabloul alăturat se afișează pe ecran, nu neapărat în această ordine, numerele 6 8 |

- variabilă de tip tablou bidimensional, declarată conform cerinței
int a[21][21];
- date citite conform cerinței
cin>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
- se parcurge matricea, verificând dacă elementul aflat pe prima coloană(a[i][1]) este egal cu elementul aflat pe ultima coloană(a[j][n]) și respectivul element este diferit de 0(a[i][1]!=0), dacă sunt îndeplinite cele două condiții elementul este afișat, variabila ok devenind 0
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
if(a[i][1]==a[j][n]&&a[i][1]!=0)
{cout<<a[i][1]<<” „;ok=0;}
}
- dacă la sfârșitul parcurgerii matricei variabila ok ramâne la valoarea 1, se afișează mesajul nu există
if(ok==1) cout<<„nu exista”;
#include <iostream>
using namespace std;
int main()
{
int a[21][21],m,n,i,j,ok=1;
cin>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
if(a[i][1]==a[j][n]&&a[i][1]!=0)
{cout<<a[i][1]<<" ";ok=0;}
}
if(ok==1)
cout<<"nu exista";
return 0;
}
