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?
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.