Informatică, întrebare adresată de andreeanegoitavlog, 8 ani în urmă

Completați valoarea inițială variabilei i care trebuie introdusă mai jos pentru a afișa 4 steluțe ("****").
int k, i;
k=1;
i=.....;
while (i<=10)
{ k=k*3;
i=i+2;
cout<<"*";
}

Răspunsuri la întrebare

Răspuns de Mghetes
2

Răspuns:

caz 1.

i = 4

merge de la i = 4 pana la <=10, din 2 in 2

si afiseaza cate o steluta la fiecare pas

i = 4, 4 <=10? da atunci i = 6, afiseaza *

i = 6, 6 <=10? da atunci i = 8, afiseaza *

i = 8, 8 <=10? da atunci i = 10, afiseaza *

i = 10, 10 <=10? da atunci i = 12, afiseaza *

i = 12, 12 <=10? nu. iese din while

in total a afisat ****

caz 2.

i = 3

merge de la i = 3 pana la <=10, din 2 in 2

si afiseaza cate o steluta la fiecare pas

i = 3, 3 <=10? da atunci i = 5, afiseaza *

i = 5, 5 <=10? da atunci i = 7, afiseaza *

i = 7, 7 <=10? da atunci i = 9, afiseaza *

i = 9,  9<=10? da atunci i = 11, afiseaza *

i = 11, 11<=10? nu. iese din while

in total a afisat ****


Sergetec: Salut, ai uitat de cazul in care i este 3, eu zic ca aceasta problema are 2 solutii
Mghetes: salut. nu ii poti atribui lui i 2 valori in acelasi timp. este adevarat ca pentru i = 3 afiseaza tot 4 stelute, dar cerinta zice sa ii atribui lui i o valoare initiala pentru rezultat 4 stetute.
Sergetec: Stiu ca nu poti, dar ziceam ca si 3 este un raspuns valid
Mghetes: da, corect
Mghetes: luasem un calcul o singura valoare pentru ca asta cerea.
Răspuns de Sergetec
2

Salut!

Raspuns: Valoarea lui "i" poate sa fie ori 3 ori 4

Explicatie:

Daca i primeste valoarea 3, atunci o sa executam while-ul pana cand i atinge valoarea 9, deoarece 3 (1 *) -> 3 + 2 = 5 (2 *) -> 5 + 2 = 7 (3 *) -> 7 + 3 = 9 (4 *)

Daca i primeste valoare 4, atunci o sa executa while-ul pana cand i atinge valoarea 10, deoarece 4 (1 *) -> 4 + 2 = 6 (2 *) -> 6 + 2 = 8 (3 *) -> 8 + 2 = 10 (4 *)

Orice valoarea mai mica de 3 si mai mare de 4 (valoare naturala) o sa rezulte mai multe/mai putine stelute.

Alte întrebări interesante