Răspuns :
Răspuns:
a) Daca x=16 si y=7, dupa executarea algoritmului, variabila s va fi egala cu 60. Aici e vorba de atentie, trebuie sa ai grija sa nu iti scape nimic in timp ce parcurgi algoritmul. Iti recomand sa folosesti un tabel de valori pentru a-ti fi mai usor.
b) Pentru a rezolva acest subpunct, trebuie sa intelegem exact ce face algoritmul dat. In cazul acesta, dupa citirea variabilelor x si y, in y va fi memorata valoarea cea mai mare dintre cele 2, iar in x cea mai mica. Astfel, i si j vor memora la randul lor aceste valori, j fiind mai mare decat i. Dupa ce am intrat in structura "repeta.....pana cand", observam ceva interesant. Restul impartirii unui numar la 2 poate fi ori 0 (cand numarul este par), ori 1 (cand numarul este impar). Hai sa luam un exemplu : sa presupunem ca i este par, iar j este impar. In cazul acesta, i%2=0 si j%2=1, asa ca prima instructiune din structura "repeta.....pana cand" se va rezuma la "s=s+i". Cu alte cuvinte, daca i si j au paritati diferite, in s il adunam pe numarul par. Daca cele 2 numere sunt impare, atat i%2, cat si j%2 sunt egale cu 1, caz in care s=s+j+i. Daca ambele numere sunt pare, atunci i%2=j%2=0, caz in care s nu se modifica.
Asadar, daca x=10 si ii dam lui y o valoare para, atunci s va fi egal, in final, cu suma tuturor numerelor impare din intervalul [x,y], incepand cu x+1. In cazul asta, primul termen al sumei este 11, astfel ca trebuie sa adunam urmatoarele numere impare pana cand obtinem 90. Totusi, trebuie sa tinem cont ca, la un moment dat, i si j se vor intersecta, si daca, in momentul acesta, ele sunt impare, le adaugam pe ambele in s. 11+13+15+17+19=75, iar 11+13+15+17+19+21=96 (mai mult decat 90). De aici rezulta ca unul dintre termenii sumei trebuie sa apara de doua ori, sau, cu alte cuvinte, i si j trebuie sa se intersecteze intr-un numar impar, care este totodata si media aritmetica a numerelor i si j. Acest numar trebuie sa fie 15, deoarece 11+13+15+15+17+19=90. Daca i este initial 10, iar media aritmetica a numerelor i si j este 15, rezulta usor ca j trebuie sa fie 20, adica y trebuie sa fie 20, caz in care avem :
i=10, j=20, s=0
s=0 (i si j sunt pare, deci s nu se modifica)
i=11, j=19
s=0+19+11=30
i=12, j=18
s=30 (nu se modifica)
i=13, j=17
s=30+17+13=60
i=14, j=16
s=60 (nu se modifica)
i=15, j=15 (i si j sunt egale si impare)
s=60+15+15=90
i=16, j=14 (i a devenit mai mare decat j, deci ies din structura)
Deci, in final, s=90 pentru y=20 (solutia 1)
Daca y ar fi impar, atunci s va fi egal cu suma numerelor pare din intervalul [x,y], intrucat i si j isi schimba constant paritatea (cand unul este par, celalalt este impar). Asadar, primul termen al sumei este chiar x, adica 10, si trebuie sa adunam urmatoarele numere pare pana cand obtinem 90 (in cazul acesta, i si j nu se pot intersecta). 10+12+14+16+18+20=90, si pentru ca y este impar, inseamna ca y=21 (pentru a fi siguri ca si 20 intra in suma s).
Deci cele doua valori pentru y sunt 20 si 21, astfel incat s sa fie, in final, egal cu 90.
c) structura "repeta.....pana cand i>j" este echivalenta cu "executa.....cat timp i<=j". Intrucat aceasta structura are test final, trebuie sa punem in schimb "cat timp i<=j.....executa". In rest algoritmul este la fel, la acest subpunct nu ar trebui sa ai probleme.
Daca ai vreo nelamurire, spune-mi-o pe chat.
Vă mulțumim că ați vizitat site-ul nostru web care acoperă despre Informatică. Sperăm că informațiile furnizate v-au fost utile. Nu ezitați să ne contactați dacă aveți întrebări sau aveți nevoie de asistență suplimentară. Ne vedem data viitoare și nu ratați să marcați.