Cineva care stie foarte bine informatica,va rog mult!
Răspunsuri la întrebare
Răspuns:
a) 19 21 17 19 16
b) s=16
Explicație:
pe pasi,
? marcheaza testare conditie,
marchez cu [#Iteratie]'{' inceput de bucla,
'}' sfarsit bucla,
y/n conditie indeplinita sau nu -> y=true, n=false.
primul if: 1if; al doilea if: 2if; conditie while: while,
scriind valoarea lui x si a stivei s pentru fiecare pas.
consola - ce se poate observa in consola, la acel pas.
![conditie] - neaga conditia.(ex.: conditie=y =>!conditie = n)
&&(and) este adevarat doar cand ambele conditii sunt indeplinite(adevarate)
Functii regasite in pseudocod+semnificatie:
peek() - aduce ultimul element din stiva, dar nu il sterge din s.
isEmpty() - verifica daca stiva este vida( goala)
pop() - aduce ultimul element al stivei, dupa care sterge acest element de la sfarsitul stivei.
push(n) - adauga numarul n la finalul stivei
Rezolvare:
a)
//init x=19,17,25,21,17,19 (se citeste/scoate/introduce din/in stiva de la dreapta inspre stanga)
x=19; s=19,17,25,21,17,19;
while (?x>=17->y &&!s.isEmpty()->y)
1{
consola: 19
x=19;s=19,17,25,21,17;
1if ?!s.isEmpty()->y => x=17;s=19,17,25,21;
2if? !s.isEmpty()->y =>x=21;s=19,17,25;
s=19,17,25,16;
}
while ?x>=17->y && !s.isEmpty()->y
2{
console: 19 21
x=16;s=19,17,25;
1if ?!s.isEmpty()->y =>x=25;s=19,17;
2if ?!s.isEmpty()->y=>x=17;s=19;
s=19,16;
}
while ?x=>17->y && ?!s.isEmpty()->y
3{
console: 19 21 17
x=16;s=19;
1if ?!s.isEmpty()->y =>x=19;s=;(stiva este goala)
2if? !s.isEmpty()->n
s=16;
}
while ? x>=17->y && ?!s.isEmpty()->y
4{
console: 19 21 17 19
x=16;s=;(stiva este goala)
1if ?!s.isEmpty()->n
2if ?!s.isEmpty()->n
s=16;
}
while ?x=>17->n && ?!s.isEmpty()->n => nu se mai intra in bucla while
console: 19 21 17 19 16
//sf
b)
s=16, deci raspuns final 16.
Spor++,
Cosmin