Informatică, întrebare adresată de Utilizator anonim, 8 ani în urmă

int n,c,i;
cout >n;
c=0;
for(i=1;i<=n/2;i++){
if(n==i*i)
c=c+1;
}
if(c==0){
cout<<"n nu este patrat perfect";
}else
cout<<"n este patrat perfect";
return 0;
De ce atunci cand ii dau valoare 1 lui n , codul nu-l recunoaste ca fiind numar perfect?


Utilizator anonim: numar patrat perfect*
AnelisseBrainly: Așa, acolo la for era problema.

Răspunsuri la întrebare

Răspuns de AnelisseBrainly
1

Am două ipoteze: prima ar fi să pui float în loc de int.

A doua ar fi să începi cu for-ul de la 0. Problema ar fi că, dacă dai valoarea 1 lui n, for-ul va parcurge de la 1 la 1/2, valoare ce este reală și mai mică decât 1.


robertoandrei65: Mulțumesc
Utilizator anonim: nu functioneza..
AnelisseBrainly: Dacă lăsai for-ul de la 1, dacă dădeai alte valori în afară de 1, mergea?
Utilizator anonim: da
Utilizator anonim: gata am rezolvat , am pus sqrt(n) in loc de n/2 si merge
Utilizator anonim: multumesc oricum
Alte întrebări interesante