Adaugare rand nou in matrice
- pmarian
- Junior
- Posts: 25
- Joined: 26 Dec 2010, 19:36
- Judet: Maramureş
- Location: Ocna Șugatag
- Contact:
Adaugare rand nou in matrice
Sa zicem ca am urmatoarea matrice:
http://www.servergeek.ro/wp-content/upl ... matrix.jpg
Ideea e ca vreau intr randul 0 si 1, daca utilizatorul vrea, sa introduca apasand o tasta (or whatever) un nou rand cu 3 coloane (cum e declarata initial matricea).
ps. in imagine e gresit pentru ca in imaginea "Dupa", pe randul 2 trebuie sa fie 1, 2, 3
Cheers !
http://www.servergeek.ro/wp-content/upl ... matrix.jpg
Ideea e ca vreau intr randul 0 si 1, daca utilizatorul vrea, sa introduca apasand o tasta (or whatever) un nou rand cu 3 coloane (cum e declarata initial matricea).
ps. in imagine e gresit pentru ca in imaginea "Dupa", pe randul 2 trebuie sa fie 1, 2, 3
Cheers !
controlling complexity is the essence of computer programming
- Marius Bancila
- Fondator
- Posts: 2344
- Joined: 11 Jul 2007, 11:45
- Judet: Timiş
- Location: Timisoara
- Contact:
Re: Adaugare rand nou in matrice
Asa, si care e problema?
Re: Adaugare rand nou in matrice
mai da un exemplu, ca n am inteles nimic
ce dim are aia initiala si ce dim are aia finala
ce dim are aia initiala si ce dim are aia finala
- pmarian
- Junior
- Posts: 25
- Joined: 26 Dec 2010, 19:36
- Judet: Maramureş
- Location: Ocna Șugatag
- Contact:
Re: Adaugare rand nou in matrice
Sa zicem ca definesc o matrice care permite stocarea a 100 de randuri iar eu am completate cu date 3 randuri pe 3 coloane.
Cum pot sa introduc un rand nou intre randul 0 si 1 spre exemplu iar valorile actuale de pe randul 1 sa mearga un rand mai jos iar unde a fost randul 1 acum sa fie noul rand cu toate valorile pe 0 (0 0 0).
Ma gandeam sa incrementez matricea si astfel sa se mute fiecare element cu cate o pozitie.
Sper ca am explicat bine
Cum pot sa introduc un rand nou intre randul 0 si 1 spre exemplu iar valorile actuale de pe randul 1 sa mearga un rand mai jos iar unde a fost randul 1 acum sa fie noul rand cu toate valorile pe 0 (0 0 0).
Ma gandeam sa incrementez matricea si astfel sa se mute fiecare element cu cate o pozitie.
Sper ca am explicat bine

controlling complexity is the essence of computer programming
-
- Membru++
- Posts: 789
- Joined: 11 Jul 2007, 14:11
Re: Adaugare rand nou in matrice
>> Cum pot sa introduc un rand nou intre randul 0 si 1 spre exemplu iar valorile actuale de pe randul 1 sa mearga un rand mai jos iar unde a fost randul 1 acum sa fie noul rand cu toate valorile pe 0 (0 0 0).
Depinde cum e implementata matricea. Dar avand in vedere ce fel deoperatii ai de facut ( introdus linii) ar trebui sa alegi o implementare ce iti permite acest lucru usor si eficient.
>> Ma gandeam sa incrementez matricea si astfel sa se mute fiecare element cu cate o pozitie.
Ce inseamna sa "incrementezi" matricea?
Depinde cum e implementata matricea. Dar avand in vedere ce fel deoperatii ai de facut ( introdus linii) ar trebui sa alegi o implementare ce iti permite acest lucru usor si eficient.
>> Ma gandeam sa incrementez matricea si astfel sa se mute fiecare element cu cate o pozitie.
Ce inseamna sa "incrementezi" matricea?
- Marius Bancila
- Fondator
- Posts: 2344
- Joined: 11 Jul 2007, 11:45
- Judet: Timiş
- Location: Timisoara
- Contact:
Re: Adaugare rand nou in matrice
Daca matricea e un tablou 2D atunci ce trebuie sa faci ca sa introduci o linie la indexul R e sa copiezi toate liniile, incepand cu ultima, de la pozitia i la i+1, pana cand ajungi cu i la R. La final, linia R va exista duplicata si pe R si pe R+1, iar la pozitia R vei introduce noile valori. M-am facut inteles?
- pmarian
- Junior
- Posts: 25
- Joined: 26 Dec 2010, 19:36
- Judet: Maramureş
- Location: Ocna Șugatag
- Contact:
Re: Adaugare rand nou in matrice
Nu matricea. Scuze. o variabila cu valoarea 0 (prima pozitie). Cu un ciclu for dupa care afisez matricea prin a spre exemplu. Ziceai de o implementare care imi permite acest lucru. La ce implementari te referi ? 

controlling complexity is the essence of computer programming
- pmarian
- Junior
- Posts: 25
- Joined: 26 Dec 2010, 19:36
- Judet: Maramureş
- Location: Ocna Șugatag
- Contact:
Re: Adaugare rand nou in matrice
In mare parte da. Ma pun la treaba.Marius Bancila wrote:Daca matricea e un tablou 2D atunci ce trebuie sa faci ca sa introduci o linie la indexul R e sa copiezi toate liniile, incepand cu ultima, de la pozitia i la i+1, pana cand ajungi cu i la R. La final, linia R va exista duplicata si pe R si pe R+1, iar la pozitia R vei introduce noile valori. M-am facut inteles?
controlling complexity is the essence of computer programming
- Marius Bancila
- Fondator
- Posts: 2344
- Joined: 11 Jul 2007, 11:45
- Judet: Timiş
- Location: Timisoara
- Contact:
Re: Adaugare rand nou in matrice
OK. Si daca nu te descurci arata-ne ce ai facut si ii dam cumva de capat.
- pmarian
- Junior
- Posts: 25
- Joined: 26 Dec 2010, 19:36
- Judet: Maramureş
- Location: Ocna Șugatag
- Contact:
Re: Adaugare rand nou in matrice
Am rezolvat algoritmul pe hartie. Maine sau sambata sper sa-l pun si in cod. Revin.
controlling complexity is the essence of computer programming
- pmarian
- Junior
- Posts: 25
- Joined: 26 Dec 2010, 19:36
- Judet: Maramureş
- Location: Ocna Șugatag
- Contact:
Re: Adaugare rand nou in matrice
Pana acum am facut asa:
Cu codul de fata inserez o valoare pe o pozitie insa distrug valoarea prestabilita. As vrea sa mut toate elementele cu o pozitie mai incolo si sa inserez valoarea stocata in variabila c pe pozitia din variabila b. Sau, ca sa fie mai simplu, sa zicem ca vreau sa introduc o valoare introdusa de utilizator pe o pozitie prestabilita, sa zicem 2.
Teoretic stiu cum trebuie facut insa nu si in cod.
Ex. a[6] = a[5]
a[5] = a[4]
...
Astfel mut toate pozitile cu o pozitie in fata. Teoria ca teoria dar codul ma omoara ... Logic acolo vine un ciclu for. Dar nu stiu cum sa fac
Any ideea ?
Code: Select all
int main() {
int a[6] = { 10, 15, 20, 25, 30, 0 };
int b, c, i;
for (i = 0; i < 6; i++) {
cout << a[i] << " ";
}
cout << endl;
cout << "Introduce numarul pozitiei: ";
cin >> b;
cout << "Inserati un numar: ";
cin >> c;
if (b < 6) {
a[b] = c;
cout << a[b] << " ";
}
else {
cout << "Pozitia introdusa nu exista" << endl;
}
return 0;
}
Teoretic stiu cum trebuie facut insa nu si in cod.
Ex. a[6] = a[5]
a[5] = a[4]
...
Astfel mut toate pozitile cu o pozitie in fata. Teoria ca teoria dar codul ma omoara ... Logic acolo vine un ciclu for. Dar nu stiu cum sa fac

Any ideea ?
controlling complexity is the essence of computer programming
- pmarian
- Junior
- Posts: 25
- Joined: 26 Dec 2010, 19:36
- Judet: Maramureş
- Location: Ocna Șugatag
- Contact:
Re: Adaugare rand nou in matrice
Hmm, cred ca voi face aceasta mutare cu o functie prin referire. Revin 

controlling complexity is the essence of computer programming
-
- Membru++
- Posts: 789
- Joined: 11 Jul 2007, 14:11
Re: Adaugare rand nou in matrice
Daca ai nevoie sa faci multe operatii de adaugare in interiorul array-ului tau ( ma rog, matrice unidimensionala) atunci mai bine ai implementa array-ul ca lista simplu ( sau dublu) inlantuita. Aceasta implementare permite adaugari "in interior" foarte eficiente, doar prin modificarea unor linkuri.
a[0] ->a[1]->a[2]
Introducerea unei valori in loc de a[1] inseamna modificarea elgaturii de la A[0] la noul a[1] si crearea unei legaturi de la noul a[1] la fostul a[1]
a[0] ->a[1]->a[2]
Introducerea unei valori in loc de a[1] inseamna modificarea elgaturii de la A[0] la noul a[1] si crearea unei legaturi de la noul a[1] la fostul a[1]
Code: Select all
a[0] a[1] vechi->a[2]
\ /
a[1] nou
- pmarian
- Junior
- Posts: 25
- Joined: 26 Dec 2010, 19:36
- Judet: Maramureş
- Location: Ocna Șugatag
- Contact:
Re: Adaugare rand nou in matrice
Da, stiu cum sa scriu pe foaie algoritmul si uite ce am facut in cod:
Singura problema e ca imi distruge valoarea initiala care era definita in sir. Eu vreau sa mut fiecare valoare incepand cu pozitia a mai in fata cu o pozitie.
Code: Select all
#include <iostream>
using namespace std;
int main() {
int a[6] = { 10, 15, 20, 25, 30, 0 };
int b, c, i, j;
for (i = 0; i < 6; i++) {
cout << a[i] << " ";
}
cout << endl;
cout << "Introduce numarul pozitiei: ";
cin >> b;
cout << "Inserati un numar: ";
cin >> c;
if (b < 6) {
a[b] = c;
for (j = a[6]; j < 6; j++)
cout << a[j] << " ";
}
else {
cout << "Pozitia introdusa nu exista" << endl;
}
return 0;
}
controlling complexity is the essence of computer programming
Re: Adaugare rand nou in matrice
De ce nu definesti tu o alta matrice si copiezi in aia j linii din prima, o adaugi pe aia "de incrementare" si apoi copiezi in continuare. asta asa, fara optimizari de cod si in ideea ca am inteles eu bine problema ca fiind una de inserare a unei linii intr-o matrice.
Ideea cu liste este foarte naturala si-ti incalzeste mai multi muschi din c++(c).
Ideea cu liste este foarte naturala si-ti incalzeste mai multi muschi din c++(c).