online: 7; azi: 1323; total: 53329 Manual clasa a ix a - Implementarea structurilor de date - Structuri de date

Probleme Rezolvate



Manual clasa a IX a

Implementarea structurilor de date

Structuri de date

Se consideră o matrice a cu n linii şi m coloane cu elemente numere reale . Valorile pentru n şi m şi elementele matricei se citesc de la tastatură . Se mai citesc de la tastatură două numere întregi p (1< = p< = n) şi g (1< = q< = m). Să se elimine din matrice linia p şi coloana g. Să se afişeze matricea obținută
Pentru a elimina o linie din matricea a putem folosi următoarea metodă: creăm o nouă matrice b de dimensiuni (n-1) x m și copiem toate elementele matricei a în b , cu excepția elementelor de pe linia p .
Pentru a elimina o coloană, vom crea o nouă matrice c de dimensiuni n x (m-1) și vom copia toate elementele matricei b în c , cu excepția elementelor de pe coloana q .
Astfel, vom obține o matrice cu o linie și o coloană mai puțin decât matricea inițială. Pentru a afișa matricea rezultată, parcurgem toate elementele acesteia și le afișăm pe ecran.
# include < iostream >
using namespace std ;
int main ()
{
int n, m, p, q;
cout << " Introduceti numarul de linii si coloane ale matricei (n m): " ;
cin >> n >> m;
float a[n][m];
cout << " Introduceti elementele matricei:\n" ;
for ( int i= 0 ; i<n; i++)
for ( int j= 0 ; j<m; j++)
cin >> a[i][j];
cout << " Introduceti linia si coloana care trebuie eliminate (p q): " ;
cin >> p >> q;
// eliminam linia p
float b[n -1 ][m];
for ( int i= 0 , k= 0 ; i<n -1 ; i++, k++)
{
if (k == p -1 ) // sarim linia p
k++;
for ( int j= 0 ; j<m; j++)
b[i][j] = a[k][j];
}
// eliminam coloana q
float c[n -1 ][m -1 ];
for ( int i= 0 ; i<n -1 ; i++)
{
for ( int j= 0 , k= 0 ; j<m -1 ; j++, k++)
{
if (k == q -1 ) // sarim coloana q
k++;
c[i][j] = b[i][k];
}
}
// afisam matricea rezultata
cout << "Matricea rezultata:\n" ;
for ( int i= 0 ; i<n -1 ; i++)
{
for ( int j= 0 ; j<m -1 ; j++)
{
cout << c[i][j] << " " ;
}
cout << endl ;
}
return 0 ;
}

La rularea programului, utilizatorul trebuie să introducă numărul de linii și coloane ale matricei, elementele acesteia, precum și linia și coloana care trebuie eliminate. Programul va elimina aceste elemente și va afișa matricea rezultată.
După citirea valorilor pentru n, m şi elementele matricei, se poate declara matricea de tipul float cu dimensiunea adecvată, aşa cum a fost prezentat în exemplul anterior.
În continuare, se pot citi valorile pentru p şi q, apoi se poate declara o nouă matrice de tipul float , numită result , cu dimensiunea (n-1)x(m-1) , adică matricea obţinută prin eliminarea liniei p şi coloanei q.
În următorul pas, se pot parcurge liniile şi coloanele matricei initiale , excepţie făcând linia p şi coloana q, şi se pot copia elementele în matricea result . Dacă liniile şi coloanele din matricea iniţială sunt indexate începând de la 0, atunci liniile din matricea result se vor indexa de la 0 până la n-2, iar coloanele se vor indexa de la 0 până la m-2. De aceea, elementele din matricea iniţială a[i][j] se vor copia în matricea result la poziţia a[i-(i>=p)][j-(j>=q)].
În final, se poate afişa matricea result folosind un dublu for care parcurge liniile şi coloanele acesteia.