Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
Functie void returneaza matrice cu 0 si 1
Last Updated: Oct 26 2016 17:43, Started by
Juny0r
, Oct 26 2016 17:07
·
0
#1
Posted 26 October 2016 - 17:07
Salut, am urmatoarea cerinta:
Quote
Scrieți o funcție care primește o matrice de 1 și 0, și returnează matricea modificată astfel: dacă într-o celulă se găsește 0, toată linia și coloana respectivă vor fi umplute cu 0. Exemplu: Pentru matricea: [1, 0, 1] [1, 1, 1] [1, 1, 1] Funcția va returna: [0, 0, 0] [1, 0, 1] [1, 0, 1] void transformMatrix(char mat[1000][1000], unsigned int rows, unsigned int columns); Am rezolvat aceasta problema insa nu inteleg cum pot returna matricea daca functia este void ? Cum ar trebui sa procedez ? Functia pe care am facut o lucreaza direct pe matrice, cineva mi-a zis ca e okei doar sa o modific si atat, ca ramane modificata si in main, dar vreau sa ma asigur totusi. Problema rezolvata arata cam asa: (nu sunt prea multumit ca am atatea for-uri, dar sincer m-am plictisit de cand am incercat sa caut o solutie mai buna.. daca stiti si aveti un sfat, mi-ar prinde bine) void transformMatrix(char mat[MAX_ARRAY_LENGTH_LONG][MAX_ARRAY_LENGTH_LONG], unsigned int rows, unsigned int columns) { bool colFlag=false, rowFlag=false; unsigned int i, j; for(i=0; i<rows; i++) // aici verific daca pe prima linie exista valori de 0, daca da, rowFlag va deveni true if(mat[i][0]==0) rowFlag=true; for(j=0; j<columns; j++) // aici verific daca pe prima coloana exista valori de 0, daca da, colFlag va deveni true if(mat[0][j]==0) colFlag=true; for(i=1; i<rows; i++) for(j=1; j<columns; j++) { if(mat[i][j]==0) /* parcurg matricea normal (fara prima linie si coloana) si cand gasesc un 0 modific valoarea liniei 0 si coloanei 0 obs: ma folosesc de prima linie si coloana pentru a stii mai tarziu unde trebuie sa pun 0 peste tot*/ { mat[i][0]=0; mat[0][j]=0; } } for(i=1; i<rows; i++) // mai parcurg o data matricea ca sa inlocuiesc pe fiecare linie si coloana cu 0. for(j=1; j<columns; j++) if(mat[i][0]==0 || mat[0][j]==0) mat[i][j]=0; if(colFlag) // daca e true, modific si prima coloana cu 0 peste tot for(i=0; i<columns; i++) mat[0][i]=0; if(rowFlag) // daca e true, modific si prima linie cu 0 peste tot for(i=0; i<rows; i++) mat[i][0]=0; } |
#2
Posted 26 October 2016 - 17:26
Juny0r, on 26 octombrie 2016 - 17:07, said:
Salut, am urmatoarea cerinta: Am rezolvat aceasta problema insa nu inteleg cum pot returna matricea daca functia este void ? Cum ar trebui sa procedez ? Functia pe care am facut o lucreaza direct pe matrice, cineva mi-a zis ca e okei doar sa o modific si atat, ca ramane modificata si in main, dar vreau sa ma asigur totusi. Quote Scrieți o funcție care primește o matrice de 1 și 0, și returnează matricea modificată astfel cineva ti-a spus bine, lucrezi direct cu "materialul clientului" deci ai grija ce faci cu el evenutual poti sa ii faci o copie intainte apelarea functiei Edited by MarianG, 26 October 2016 - 17:28. |
#3
Posted 26 October 2016 - 17:28
#4
Posted 26 October 2016 - 17:43
Juny0r, on 26 octombrie 2016 - 17:07, said:
nu sunt prea multumit ca am atatea for-uri, dar sincer m-am plictisit de cand am incercat sa caut o solutie mai buna.. daca stiti si aveti un sfat, mi-ar prinde bine O abordare mai curata este: 1. faci doua array-uri rows_to_zero_out si colums_to_zero_out, ambele de dimensiune MAX_ARRAY_LENGTH_LONG si cu false ca valoare (default: nu sterge nimic). 2. iterezi matricea (for in for), si cand dai de 0, setezi true rows_to_zero_out[i] si colums_to_zero_out[j] 3. iterezi rows_to_zero_out si iterezi mat[row] si setezi fiecare element din mat[row] ca 0, daca rows_to_zero_out[row] este true 4. faci acelasi lucru pentru colums_to_zero_out Vei avea 3 for-uri primare, in loc de 6. Sau pe scurt, rows_to_zero_out si colums_to_zero_out sunt aceste doua variabile la tine: Juny0r, on 26 octombrie 2016 - 17:07, said:
bool colFlag=false, rowFlag=false; Edited by OriginalCopy, 26 October 2016 - 17:53. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users