Informatică, întrebare adresată de Pisicuta1307, 9 ani în urmă

Cerinţa
Să se scrie un program care citește numărul natural n și determină suma pătratelor perfecte mai mici sau egale cu n.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe prima linie a ecranului mesajul Rezultatul este S, unde S reprezintă suma calculată.

Restricţii şi precizări
•0 < n < 1000
Exemplu

Intrare
20


Ieșire
Rezultatul este 30


Explicație
Pătratele perfecte mai mici sau egale cu 20 sunt 1, 4, 9 și 16, iar suma lor este 30.



Am o nelamurire, eu asa credeam ca se rezolva, insa imi da rezultatul 0 cand dau build:

#include <iostream>
using namespace std;
int main()
{
   long long n,i,s=0;
   cin>>n;
   for(i=n;i<=1;i++)
       s=s+i*i;
   cout<<"Rezultatul este"<<" "<<s;
    return 0;
}


Răspunsuri la întrebare

Răspuns de antonii
2
aaaa....Mai trebuie sa te mai uiti peste coduri in c++..si putina mate. Ai doua mari probleme in codul tau.

Primul vei avea un loop infinit. in 'for(int i=n;i<=1;i++)'. Adica fa un loop de la i care e la inceput cu n ....pana la 1(!??) aduand de fiecare data in i +1. 

Si patrate perfecte pana in n nu inseamna i*i (daca n=20 maximul patrat perfect e 16 la tine e 20*20...?!!)Iti voi da codul mai incolo.Acum trebuie sa plec.

Pisicuta1307: Da, ai dreptate , insa chiar nu stiu cum de le-am intors pe dos in for
Pisicuta1307: M-am gandit ca daca zice mai mic sau egal cu n e suma patratelor de la n in jos
antonii: Asta e codul:
antonii: for(int i=1;i*i<=n;i++){cout<<"Un p.p e :"<<i;} Codul asta va lua toate patratele perfecte mai mici decat n. Adica n e 20 va lua patratele perfecte precum 1*1;2*2;3*3;4*4 iar cand i e 5 vezi ca in conditia de existenta a for-ului(i*i<=n) i^2 trebuie sa fie mai mic decat n. Deci cand i ajunge 5 se opreste.
antonii: Deci iti va afisa de 1,4,9,16
antonii: Nu am mai putut sa-l adaug in raspouns (nu -mi mai apare butonl edit.) Dar poti sa-mi dai un vot (sau multumesc)...daca ....vrei.
Pisicuta1307: da,iar inainte de cout s=s+i*I si acum imi da corect
Alte întrebări interesante