Adaugare rand nou in matrice

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
User avatar
pmarian
Junior
Junior
Posts: 25
Joined: 26 Dec 2010, 19:36
Judet: Maramureş
Location: Ocna Șugatag
Contact:

Re: Adaugare rand nou in matrice

Post by pmarian » 03 Mar 2011, 22:13

Ideea e ca vreau sa am o singura matrice cu "n" elemente si sa fie "dinamic" adica sa pot adauga date in ea exact in modul in care am explicat mai sus :)


controlling complexity is the essence of computer programming

User avatar
zlatomir
Membru++
Membru++
Posts: 282
Joined: 04 Jul 2009, 23:59
Location: Arad
Contact:

Re: Adaugare rand nou in matrice

Post by zlatomir » 03 Mar 2011, 23:06

Pai tocmai pentru ca vrei inserare in mijloc e mai recomandata lista (dublu inlantuita) in locul array-ului (sau std::vector).
In topic-ul tau despre carti cu probleme C++ ti-am dat link la o carte despre algoritmi (si contine informatii si despre structuri de date), iti recomand sa descarci pdf-urile (sau sa arunci o privire online)
O alta scurta comparatie intre containere (cele din STL) poate fi gasita aici.

Acum legat de cod, tu nu faci copierea (aceea de care zicea Marius), codul ar trebui sa arate cam asa:

Code: Select all

   
//...
   if (b < 6) { 
//tu aici doar ai afisat array-ul
      for (j = 5; j > b; j--) {       //incepi de la sfarsit
			a[j] = a[j-1];    //copiezi elementele ... (ii pierzi valoarea ultimului daca nu faci realocari)
	  }
      a[b] = c; //si apoi il pui pe c pe pozitie
   }
//afisarea o faci mai tarziu
...
Acum incearca sa ii faci niste imbunatatiri:
1) sa folosesti o variabila pt a stoca marimea (numarul de elemente) sa nu il mai ai pe magicul 6 repetandu-se peste tot
2) tu faci citirea "numarului" de inserat (c) chiar si daca pozitia (b) e mai mare decat 6.
3) poti sa il scri astfel incat programul sa afiseze pozitia in forma "umana" adica 1 sa fie primul element si 6 ultimul (nu primul 0 si 5 ultimul ca si pt C++)

Post Reply