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

Care sunt motivele pentru care programul de mai jos nu afișează pe ecran DA?

int main() {
int n = 1, m, p = 5, z = 23, k = 5;
while (p <= 5) {
n += m;
p = p + 5;
}
p == p - 1;
if ((n + m) % 2 == 0 && p == 9 && z == 24) {
cout << "DA";
}
return 0;
}

a)Variabila m este folosită în program înainte de a fi inițializată

b)Variabila z nu își schimbă valoarea

c)Variabila k nu își schimbă valoarea

d)Linia 7 nu are nici un efect


Puteti sa imi si explicati de ce?

Răspunsuri la întrebare

Răspuns de PaulTMS
1

Afirmatiile a, b, c si d sunt adevarate

a. m este declarata local si primeste o valoare necunoscuta care poate fii para sau impara

b. z nu o sa fie niciodata 24 pentru ca nu este modificat

c. nu afecteaza programul sau raspunsul dar este o afirmatie adevarata

d. lui p nu i se atribuie p-1, doar se verifica daca este egal cu p-1 si in cazul asta o sa ramana 10

raspunsul cred ca e a,b,d pentru ca c nu e un motiv pentru care nu se afiseaza "DA"

Răspuns de marian3689
3

Problema scrisa de tine este o problema de pe wellcode.ro   ...

Pentru ca sa arate "DA" pe ecran, conditia lui IF trebuie indeplinita

((n + m) % 2 == 0 && p == 9 && z == 24)  < ---- conditia lui IF

pentru ca ea sa fie indeplinita,  trebuie ca atat partea stanga... (n + m) % 2 == 0,  partea din centru p == 9 cat si partea din dreapta z == 24 sa fie adevarate in acelasi timp ...  true && true &&true

if ((n + m) % 2 == 0 && p == 9 && z == 24)

In linia a 2-a variabila m nu are nici o valoare,

int n = 1, m, p = 5, z = 23, k = 5;

Partea din stanga nu poate fii adevarata deoarece lui m nu ii s-a atribuit nici o valoare, prin urmare (n + m) % 2 == 0 nu se poate calcula.

deci pe wellcode bifeaza varianta a, pentru ca nu a fost initializata, gen m=3; etc

variabila z nu isi schimba valoarea, z=23, fiindca nu exista posibilitatea ca sa fie si 24, conditia lui IF nu va putea fii indeplinita niciodata.

deci pe wellcode bifeaza si varianta b.

variabila k aici nu ne intereseaza pentru ca nu face parte din conditia lui IF.

linia a 7-a adica p == p - 1; nu are nici un efect, variabila p fost initializata cu valoarea 5, dar == nu este semnul de la atribuire si chiar daca ar fii fost, p scadea, nu avea cum sa ajunga la valoarea 9 pentru a fii adevarata conditia lui IF.

Mult succes!


marian3689: Pe wellcode.ro
marian3689: a)Variabila m este folosită în program înainte de a fi inițializată

b)Variabila z nu își schimbă valoarea

d)Linia 7 nu are nici un efect

trebuiesc bifate
Alte întrebări interesante