Vă prezentăm câteva exerciții pseudocod de tipul exercițiilor din bacalaureat.
Exemplu:
Se dă secvența de pseudocod:
citeste n
s ← 0
pentru i ← 1, n executa
citeste x
daca x % 2 = 0 atunci
s ← s + x
sfârșit daca
sfârșit pentru
afișează s
a) Ce se afișează dacă se citesc valorile 4, 5, 2, 3, 6?
Rezolvare: Se citesc 5 valori: 4, 5, 2, 3, 6. Se adună doar numerele pare: 4 + 2 + 6 = 12.
Răspuns: 12
b) Scrieti un set de date de intrare pentru care se va afișa 0.
Rezolvare: Se afișează 0 atunci când toate valorile citite sunt impare. Exemplu: n = 3 și valorile 1, 3, 5. (Un set de date de intrare reprezinta o valoare pentru n si cate o valoare pentru fiecare din cele n numere citite
c) Rescrieți secvența astfel încât să folosească doar o structură repetitivă cu test final.
citeste n
s ← 0
i ← 1
repeta
citeste x
daca x % 2 = 0 atunci
s ← s + x
sfârșit daca
i ← i + 1
până când i > n
afișează s
d) Scrieți algoritmul C++ corespunzător algoritmului inițial
#includeusing namespace std; int main() { int n, x, s = 0; cin >> n; for (int i = 1; i <= n; i++) { cin >> x; if (x % 2 == 0) s += x; } cout << s; return 0; }
Exercițiile 1–20
Exercițiul 1
Se dă secvența de pseudocod:
citeste x
cnt ← 0
cat timp x mod 3 = 0 executa
cnt ← cnt + 1
x ← [x / 3]
sfârșit cat timp
daca x=1 atunci
scrie "da"
altfel
scrie "nu"
sfarsit daca
a) Ce se afișează pentru x = 27?
b) Pentru cate numere de 2 cifre algoritmul de mai sus va afisa nu?
c) Rescrieți secvența cu test final (cat timp … executa)
d) Scrieți algoritmul C++ corespunzător
Exercițiul 2
Se dă secvența de pseudocod:
citeste x
a ← 1
ok ← 0
cat timp a*(a+1) <= x executa
daca a*(a+1) = x atunci
ok ← 1
sfârșit daca
a ← a + 1
sfârșit cat timp
scrie ok
a) Ce se afișează pentru x = 6?
b) Pentru cate valori de 2 cifre citite pentru x se va afișa 1?
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 3
Se dă secvența de pseudocod:
citeste x
cnt ← 0
cat timp x ≠ 0 executa
daca x % 2 = 1 atunci
cnt ← cnt + 1
sfârșit daca
x ← [x / 2]
sfârșit cat timp
scrie cnt
a) Ce se afișează pentru x = 13?
b) Scrieti cea mai mica si cea mai mare valoare de maxim 2 cifre care poate fi citita pentru x astfel incat algoritmul sa afiseze 3.
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 4
Se dă secvența de pseudocod:
citeste x
cnt ← 0
d ← 2
cat timp d*d <= x executa
cat timp x mod d = 0 executa
cnt ← cnt + 1
x ← [x / d]
sfârșit cat timp
d ← d + 1
sfârșit cat timp
daca x > 1 atunci
cnt ← cnt + 1
sfârșit daca
scrie cnt
a) Ce se afișează pentru x = 18?
b) Scrieti cel mai mic si cel mai mare numar de 2 cifre care pot fi citite pentru x astfel incat algoritmul sa afiseze valoarea 1?
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 5
Se dă secvența de pseudocod:
citeste n
a ← 0
b ← 1
cat timp a <= n executa
c ← a + b
a ← b
b ← c
sfârșit cat timp
scrie c
a) Ce se afișează pentru n = 6?
b) Scrieti o valoare pentru n astfel incat algoritmul sa afiseze 54.
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 6
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
daca x < 0 atunci
cnt ← cnt + 1
sfârșit daca
sfârșit pentru
scrie cnt
a) Ce se afișează pentru n = 5 și valorile 3, -2, 0, -5, 7?
b) Pentru n=5 dati exemplu de cel putin 3 seturi de date de intare astfel incat algoritmul sa afiseze 2.
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 7
Se dă secvența de pseudocod:
citeste n
pentru i ← 2, n executa
ok ← 1
d ← 2
cat timp d*d <= i si ok = 1 executa
daca i mod d = 0 atunci
ok ← 0
scrie d
sfârșit daca
d ← d + 1
sfârșit cat timp
sfârșit pentru
a) Ce se afișează pentru n = 10?
b) Scrieti cel putin 3 valori care pot fi citite pentru n astfel incat sa se afiseze un numar impar de valori.?
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 8
Se dă secvența de pseudocod:
citeste n
pentru i ← 1, n executa
citeste x
ok ← 1
ult_cifra ← x % 10
x ← [x / 10]
cat timp x ≠ 0 si ok = 1 executa
cifra ← x % 10
daca cifra >= ult_cifra atunci
ok ← 0
sfârșit daca
ult_cifra ← cifra
x ← [x / 10]
sfârșit cat timp
scrie ok
sfârșit pentru
a) Ce se afișează pentru n = 3 și valorile 321, 432, 543?
b) Scrieti cel putin 2 seturi de date de intrare pentru care se vor afisa un numar impar de valori de 1.
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 9
Se dă secvența de pseudocod:
citeste n
pentru i ← 1, n executa
r ← 1
ok ← 0
cat timp r*r <= i executa
daca r*r = i atunci
ok ← 1
sfârșit daca
r ← r + 1
sfârșit cat timp
scrie ok
sfârșit pentru
a) Ce se afișează pentru n = 10?
b) Scrieti 2 seturi de date de intrare astfel incat sa se afiseze 4 valori de 1.
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 10
Se dă secvența de pseudocod:
citeste x
cnt ← 0
y ← x
cifra_ref ← y % 10
y ← [y / 10]
cat timp y ≠ 0 executa
daca y % 10 = cifra_ref atunci
cnt ← cnt + 1
sfârșit daca
y ← y div 10
sfârșit cat timp
scrie cnt
a) Ce se afișează pentru x = 1223?
b) Scrieti cel mai mic si cel mai mare numar de 5 cifre care pot fi citite pentru x astfel incat algoritmul sa afiseze valoarea 2?
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 11
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
r ← 1
ok ← 0
cat timp r*r <= x executa
daca r*r = x atunci
ok ← 1
sfârșit daca
r ← r + 1
sfârșit cat timp
daca ok = 1 atunci
cnt ← cnt + 1
sfârșit daca
sfârșit pentru
a) Ce se afișează pentru n = 5 și valorile 1, 2, 3, 4, 5?
b) Scrieti 3 seturi de date de intrare astfel incat algoritmul sa afiseze valoarea 4.
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 12
Se dă secvența de pseudocod:
citeste n
a ← 0
b ← 1
cat timp a <= n executa
daca a mod 2 = 1 atunci
scrie a
sfârșit daca
c ← a + b
a ← b
b ← c
sfârșit cat timp
scrie c
a) Ce se afișează pentru n = 10?
b) Scrieti 2 valori care pot fi citite pentru n astfel incat algoritmul sa afiseze doar numere impare.
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 13
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
a ← 1
ok ← 0
cat timp a*(a+1) <= x executa
daca a*(a+1) = x atunci
ok ← 1
sfârșit daca
a ← a + 1
sfârșit cat timp
daca ok = 1 atunci
cnt ← cnt + 1
sfârșit daca
sfârșit pentru
scrie cnt
a) Ce se afișează pentru n = 5 și valorile 2, 3, 6, 12, 20?
b) Pentru n=5 scrieti 2 seturi de date de intare pentru care se afiseaza 3 si alte 2 seturi de date de intrare pentru care se afiseaza 0.
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 14
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
ok ← adevarat
ult_cifra ← x mod 10
x ← x div 10
cat timp x ≠ 0 executa
cifra ← x mod 10
daca cifra >= ult_cifra atunci
ok ← fals
sfârșit daca
ult_cifra ← cifra
x ← x div 10
sfârșit cat timp
daca ok = adevarat atunci
cnt ← cnt + 1
sfârșit daca
sfârșit pentru
scrie cnt
a) Ce se afișează pentru n = 3 și valorile 321, 432, 543?
b) Pentru n=8 scrieti un set de date de intare pentru care se afiseaza 2 si un alt set de date de intrare pentru care se afiseaza 0
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 15
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
s ← 0
p ← 1
y ← x
cat timp y ≠ 0 executa
cifra ← y % 10
s ← s + cifra
p ← p * cifra
y ← [y / 10]
sfârșit cat timp
daca s % 7 = 0 si p % 2 = 1 atunci
cnt ← cnt + 1
sfârșit daca
sfârșit pentru
scrie cnt
a) Ce se afișează pentru n = 3 și valorile 17, 23, 49?
b) Pentru n=5 scrieti un set de date de intare pentru care se afiseaza 0 si un alt set de date de intare pentru care se afiseaza 2
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 16
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
ok1 ← 1
ult_cifra ← x % 10
y ← [x / 10]
cat timp y ≠ 0 executa
cifra ← y % 10
daca cifra >= ult_cifra atunci
ok1 ← 0
sfârșit daca
ult_cifra ← cifra
y ← [y / 10]
sfârșit cat timp
y ← x
inv ← 0
cat timp y ≠ 0 executa
inv ← inv * 10 + y % 10
y ← [y / 10]
sfârșit cat timp
daca ok1=1 si inv = x atunci
cnt ← cnt + 1
sfârșit daca
sfârșit pentru
scrie cnt
a) Ce se afișează pentru n = 3 și valorile 3, 12, 21?
b) Pentru n=4 scrieti un set de date de intare pentru care algoritmul afiseaza 1.
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 17
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
a ← 1
cat timp a*(a+1)*(a+2) <= x executa
daca a*(a+1)*(a+2) = x atunci
cnt ← cnt + 1
sfârșit daca
a ← a + 1
sfârșit cat timp
sfârșit pentru
scrie cnt
a) Ce se afișează pentru n = 4 și valorile 6, 24, 60, 120?
b) Pentru n=4 scrieti un set de date de intrare pentru care se afiseaza 2 si un alt set de date intrare pentru care se afiseaza 0
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 18
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
y ← x
s ← 0
cat timp y ≠ 0 executa
s ← s + y % 10
y ← [y / 10]
sfârșit cat timp
daca s = x % 10 atunci
cnt ← cnt + 1
sfârșit daca
sfârșit pentru
scrie cnt
a) Ce se afișează pentru n = 3 și valorile 12, 23, 34?
b) Pentru n=5 scrieti un set de date de intrare pentru care se afiseaza 4 si un al set de date de intrare pentru care se afiseaza 0
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 19
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
produs ← 1
y ← x
cat timp y ≠ 0 executa
produs ← produs * (y % 10)
y ← [y / 10]
sfârșit cat timp
daca produs % 2 = 1 atunci
cnt ← cnt + 1
sfârșit daca
sfârșit pentru
scrie cnt
a) Ce se afișează pentru n = 3 și valorile 13, 24, 57?
b) Pentru n=5 scrieti un set de date de intrare pentru care se afiseaza 4 si un al set de date de intrare pentru care se afiseaza 0
c) Rescrieți secvența cu test final
d) Scrieți algoritmul C++ corespunzător
Exercițiul 20
Se dă secvența de pseudocod:
citeste n
cnt ← 0
pentru i ← 1, n executa
citeste x
ok ← 1
cat timp x > 0 executa
cifra ← x % 10
daca cifra % 2 = 0 atunci
ok ← 0
sfârșit daca
x ← [x / 10]
sfârșit cat timp
daca ok = 1 atunci
cnt ← cnt + 1
sfârșit daca
sfârșit pentru