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

Stie cineva programul pentru a elimina o linie dintr-o matrice in c++ ????


Mrincredible: matrice de tipul int m[X][Y] ?

Răspunsuri la întrebare

Răspuns de Razzvy
2

#include <iostream>

using namespace std;


//eliminarea liniei cu indexul l din matricea a[n][m]

//dupa eliminarea liniei, numarul de linii va fi n-1

void eliminare_linie(int a[][100], int & n, int m, int l)

{

n--;

for (int i = l; i < n; i++)

{

for (int j = 0; j < m; j++)

a[i][j] = a[i + 1][j]; //shiftam toate liniile cu o pozitie mai sus, incepand de la linia l; astfel, linia (l+1) se va scrie peste linia l, prin urmare va fi eliminata

}

}


int main()

{

int n, m, a[100][100], l;


//citirea matricei

cin >> n >> m;

for (int i = 0; i < n; i++)

for (int j = 0; j < m; j++)

cin >> a[i][j];

//linia care trebuie eliminata

//matricea e numerotata de la 0, asa ca pentru a elimina prima linie, l=0

cin >> l;


eliminare_linie(a, n, m, l);


//afisarea matricei

for (int i = 0; i < n; i++)

{

for (int j = 0; j < m; j++)

cout << a[i][j] << ' ';

cout << '\n';

}

}


Mrincredible: Foarte bun codul, dar doar vreau sa spun ca declaratul matricii in main poate crea probleme uneori.Cred ca stii asta dar pentru cei care nu si se uita pe codul tau sa vada. 5 stele
Razzvy: De fapt nu stiu. Ce probleme poate crea?
ArMyFoRHeLL: Sunt si eu curios ce probleme poate crea declaratul matricii in main ??
Razzvy: Oricum, mersi pentru apreciere.
Mrincredible: Atunci cand creezi o matrice in main ea e plina de numere mari, de obicei se apropie de limita tipului de date.Acest lucru nu e bun pentru memorie.In loc sa ocupe n^2 * 4 bytes poate ocupa cu 50, 100, 300 bytes mai mult.Chiar daca pare putin, la olimpiada si pe site-uri cu probleme, poti avea limita mica, de ex 1800 de bytes.Ar fi o prostie sa nu iei punctele din cauza declararii cand codul e foarte bun.
Razzvy: Pai daca eu o delcar int, atunci el are 4 bytes. Nu conteaza ce stocheaza el. 0 si 999999999 ocupa la fel de mult spatiu atata timp cat ele sunt pe acelasi tip de date.
Razzvy: nu?
Mrincredible: teoretic da.practic nu. exista o eroare de 0.001 sau ceva asemanator o matrice de int plina de 0 va fi mai "usoara"decat una umpluta cu 2^16 - 1 . Oricum chestia asta se ia in considerare putin dar la toti profesorii cu care am lucrat (7 profesori) mi-au spus sa o declar mereu in afara main-ului
Razzvy: Ok, asta inteleg. Ar fi mai rapid de accesat. Cu toate vazusem un articol de pe infoarena care spunea tocmai invers. Dar nu am nimic cu care pot dovedi, asa ca nu stiu.
Alte întrebări interesante