•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« : Octombrie 01, 2013, 15:49:07 » |
|
Salut, am inceput sa studiez stivele, dar nu inteleg o chestie.In carte este explicat asa:
Inserarea unui element în stivă Pentru a insera un element x în stiva S trebuie să verificăm în primul rând dacă „avem loc”, deci dacă stiva nu este plină. Dacă stiva este plină, inserarea nu se poate face, altfel vom mări vârful stivei şi vom plasa la vârf noul element.
Iar Codul:
#define DimMax 18 //numarul maxim de elemente din stiva typedef int Stiva[DimMax]; //tipul Stiva implementat ca vector Stiva S; //stiva int vf; //varful stivei
if (vf == DimMax-1) //stiva este plina cout<<"Eroare - stiva este plina\n"; else //inseram elementul x in stiva S S[++vf] = x;
daca presupunem: x=3 si DimMax=18(Dimensiunea maxima a stivei).Nu pot intelege ce se intampla in if acolo ? if(vf==DimMax-1)..verifica daca ultimul element al stivei este egal cu DimMax-1? Nu inteleg...ma puteti ajuta?
|
|
|
Memorat
|
|
|
|
•blasterz
|
|
« Răspunde #1 : Octombrie 01, 2013, 15:51:26 » |
|
Salut, am inceput sa studiez stivele, dar nu inteleg o chestie.In carte este explicat asa:
Inserarea unui element în stivă Pentru a insera un element x în stiva S trebuie să verificăm în primul rând dacă „avem loc”, deci dacă stiva nu este plină. Dacă stiva este plină, inserarea nu se poate face, altfel vom mări vârful stivei şi vom plasa la vârf noul element.
Iar Codul:
#define DimMax 18 //numarul maxim de elemente din stiva typedef int Stiva[DimMax]; //tipul Stiva implementat ca vector Stiva S; //stiva int vf; //varful stivei
if (vf == DimMax-1) //stiva este plina cout<<"Eroare - stiva este plina\n"; else //inseram elementul x in stiva S S[++vf] = x;
daca presupunem: x=3 si DimMax=18(Dimensiunea maxima a stivei).Nu pot intelege ce se intampla in if acolo ? if(vf==DimMax-1)..verifica daca ultimul element al stivei este egal cu DimMax-1? Nu inteleg...ma puteti ajuta?
vf = numarul de elemente din stiva, deci verifica daca stiva e plina
|
|
|
Memorat
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #2 : Octombrie 01, 2013, 15:59:36 » |
|
am inteles, multumesc foarte mult.Dar intr-un program(nu am gasit in cartea pe care o am eu).Eu setez numarul de elemente din stiva prin vf, dar varful stivei ? Adica ultimul numar ? Daca imi poti explica aceasta problema
|
|
|
Memorat
|
|
|
|
•blasterz
|
|
« Răspunde #3 : Octombrie 01, 2013, 17:54:52 » |
|
am inteles, multumesc foarte mult.Dar intr-un program(nu am gasit in cartea pe care o am eu).Eu setez numarul de elemente din stiva prin vf, dar varful stivei ? Adica ultimul numar ? Daca imi poti explica aceasta problema Elementul din varful stivei e S[vf]
|
|
|
Memorat
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #4 : Octombrie 01, 2013, 20:43:49 » |
|
am inteles, iti multumesc foarte mult, m-ai lamurit.Dar in if spune: if(vf==DimMax-1), de ce se pune DimMax-1 ? Varful stivei nu poate atinge maximul de aceea?
|
|
|
Memorat
|
|
|
|
•AlexandruValeanu
|
|
« Răspunde #5 : Octombrie 01, 2013, 22:38:41 » |
|
Vectorii sunt indexati de la 0 in C/C++ asa ca elementul S[DimMax] nu exista.
|
|
|
Memorat
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #6 : Octombrie 02, 2013, 13:53:09 » |
|
am inteles, multumesc mult de tot
|
|
|
Memorat
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #7 : Octombrie 04, 2013, 14:33:25 » |
|
Am incercat sa rezolv o problema cu stive, dar nu-mi iasa, adica nu stiu cum sa citesc aceste stive sa apara de la stanga la dreapta, problema spune asa:
Marele savant Lotocus a inventat dispozitivul din imaginea de mai jos, care functioneaza astfel: • initial cele n bile, numerotate de la 1 la n, sunt asezate în zona A, într-o ordine oarecare; • prin apasarea butonului identificat prin litera I prima bila din zona A cade în zona B; • prin apasarea butonului identificat prin litera O prima bila din zona B urca în zona C.
Cerinta Deoarece onorabilul savant spera sa-si vânda inventia unei loterii, ajutati-l scriind un program care sa indice ordinea în care trebuie apasate cele doua butoane astfel încât plecând de la o configuratie initiala a bilelor în zona A sa se obtina o anumita configuratie a lor în zona C (ceea ce va dovedi importanta extraordinara a masinariei!). Date de intrare Fisierul de intrare bile.in are urmatoarea structura: • pe prima linie valoarea numarului natural nenul n; • pe a doua linie n numere naturale nenule, separate prin spatii, reprezentând configuratia initiala a bilelor în zona A, specificate in ordine de la stanga la dreapta; ... 3 9 8 10 prof. Lucia Miron, C. N. "C. Negruzzi" 2 • pe a treia linie n numere naturale nenule, separate prin spatii, reprezentând configuratia finala la care trebuie sa ajunga bilele în zona C, specificate in ordine de la stanga la dreapta. Date de iesire Prima linie a fisierului bile.out va contine o singura linie pe care va fi scris un sir format numai din literele I si O reprezentând ordinea în care trebuie apasate cele doua butoane astfel încât plecând de la configuratia initiala sa se obtina configuratia finala sau mesajul imposibil daca nu se poate realiza acest lucru. Restrictii 1 <= n <= 2000 Ex:
bile.in 5 5 4 2 1 3 2 4 1 5 3 bile.out IIIOOIOOIO
Nu inteleg, nu gasesc deloc carti(am incercat si la biblioteca) despre probleme cu stive si cozi(si rezolvarea lor) ma puteti ajuta ?
|
|
|
Memorat
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #8 : Octombrie 05, 2013, 10:18:52 » |
|
nu ma poate ajuta nimeni ?
|
|
|
Memorat
|
|
|
|
•PlayLikeNeverB4
|
|
« Răspunde #9 : Octombrie 05, 2013, 11:47:42 » |
|
"dispozitivul din imaginea de mai jos" ?
|
|
|
Memorat
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #10 : Octombrie 05, 2013, 12:50:30 » |
|
|
|
|
Memorat
|
|
|
|
•PlayLikeNeverB4
|
|
« Răspunde #11 : Octombrie 05, 2013, 13:03:33 » |
|
Pai ai acolo rezolvarea O_O
|
|
|
Memorat
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #12 : Octombrie 05, 2013, 13:21:57 » |
|
da am rezolvarea, dar eu ma gandeam la cod.
|
|
|
Memorat
|
|
|
|
•PlayLikeNeverB4
|
|
« Răspunde #13 : Octombrie 05, 2013, 17:33:09 » |
|
Pai daca nu stii sa implementezi acest algoritm atunci poate e prea grea problema pentru tine.
|
|
|
Memorat
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #14 : Octombrie 05, 2013, 18:10:13 » |
|
Da, eu invat singur Informatica(nimeni nu ma ajuta, doar o carte) si nu gasesc acest algoritm, sau cum se poate face, de aceea am cerut ajutor aici...
|
|
|
Memorat
|
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #16 : Octombrie 06, 2013, 01:15:24 » |
|
am inteles(si am si gasit ).Inca o intrebare daca se poate si termin, am facut si cozile si nu prea inteleg acest cod: // Extragerea unui element din coada if(Inc>Sf) { cout<<"Eroare"; } else x=C[Inc++]; if(Inc>Sf) --> asta inseamna, ca la stive: Numarul de elemente de la inceput > Numarul de elemente de la sfarsit , sau gresesc ?
|
|
|
Memorat
|
|
|
|
•PlayLikeNeverB4
|
|
« Răspunde #17 : Octombrie 06, 2013, 13:17:54 » |
|
Inc si Sf sunt niste indici care indica elementul din spatele cozii si cel din fata. Cand Inc > Sf inseamna ca coada e goala (de aceea e eroare).
|
|
|
Memorat
|
|
|
|
•RazvanInfo10
Strain
Karma: 2
Deconectat
Mesaje: 32
|
|
« Răspunde #18 : Octombrie 06, 2013, 14:27:32 » |
|
Pai eu am in exemplu asa:
5 10 4 2 Inc Sf
if(Inc>Sf) { cout<<"Eroare"; } else x=C[Inc++]; , asta inseamna ca: if(Inc>Sf) --> if(5>2) ? sau gresesc?
|
|
|
Memorat
|
|
|
|
|