Informatică, întrebare adresată de duretandreea, 9 ani în urmă

2. Se consideră algoritmul alăturat, descris în
pseudocod.
S-a notat cu x%y restul împărţirii numărului întreg x la
numărul întreg nenul y.
a) Scrieţi care este valoarea afişată dacă se citesc, în
această ordine, valorile: 5, 12, 22, 1232, 3, 563.
(6p.)
b) Pentru n=7, scrieţi un set de valori ce trebuie citite în
continuare, astfel încât valoarea afişată să fie 4. (4p.)
c) Scrieţi în pseudocod un algoritm echivalent cu
algoritmul dat, în care să se înlocuiască structura
repetitivă pentru...execută cu o structură
repetitivă cu test final. (6p.)
d) Scrieţi programul C/C++ corespunzător algoritmului
dat. (10p.)
citeşte n
(număr natural nenul)
citeşte a
(număr natural)
k=0
┌pentru i<-2,n execută
│ citeşte b
│ (număr natural)
│┌dacă a%10=b%10 atunci
││ k=k+1
││altfel
││ k=k-1
│└■
│ a=b
└■
scrie k

Răspunsuri la întrebare

Răspuns de Seckar
20
a) O sa iti dau pentru primele 2 valori din sirul ala(fara n si a), adica pentru 3, 12, 22, 1232 pentru exercitiul mare vei face tu. Deci,

Suntem la citeste n, citim primul nr, adica 2, deci n = 2

Apoi, citeste a, si vine urmatorul numar, 12, deci a = 12

Apoi, k = 0

Apoi intram in acel pentru. Deci pentru i de la 2 la n, adica de la 2 la 3(deci ce e acolo se va executa de 2 ori, cand i = 2 si apoi i = 3)

Suntem in i = 2, citim b, adica citim un 22, b = 22

Daca a % 10 = b % 10. Adica a si b, impartite la 10, sa dea acelasi rest.
Pai a = 12, b = 22, deci ambele impartite la 10 dau resutul 2 deci dau acelasi rest. 

Acel daca a fost satisfacut, asa ca facem k = k+1 deci k = 0 + 1 = 1

Acum suntem la a = b, deci a = 22.

Trecem la urmatoarea executie, adica i = 3. 

Citim b, adica b = 1232.

a % 10 = 2 si b % 10 = 2 deci iarasi sunt resturile egale, intri in acel 'daca'.

Am intrat in daca, iar cresem k, deci k = k + 1 = 1 + 1 = 2

a = b adica a = 1232.

Si acum am iesit din acel 'pentru' si scriem k, care e 2 acum.

b) Hai sa iti dau un pont, asemenea exercitii nu le vei intelege decat daca vei reusi sa pui ceea ce face programul intr-o propozitie simpla. Spre exemplu algoritmul asta ar fi numarul de numere din sirula ala(exceptand n) care au aceeasi ultima cifra ca si urmatorul numar.


c) O sa iti dau metoda generala, si o sa faci tu pt programul asta:

pentru i <- x, y executa
|
|     (ceva cod)
|_

Ar trebui sa devina:

fie i = x
daca i <= y atunci
|   executa
|   |
|   |   (ceva cod)
|   |
|   |   i = i + 1
|   |
|   |_ cat timp i <= y  
|_

d) Pentru cod pune un comentariu cu ce ai incercat sa faci si vedem ce nu e bine.
Alte întrebări interesante