Răspuns :
Răspuns:
#include <iostream>
#include<math.h>
using namespace std;
int main() {
int n=1, suma=0,i=0,per=0;//date de intrare
while(n!=0)//cat timp n nu este egal cu 0 bucla while continua sa ruleze
{
cin>>n;
while(per<n)//cat timp per este mai mic decat n bucla while continua sa ruleze
{
i++;//valaorea variabilei de tip int i se mareste cu +1 dupa fiecare rulare a buclei
per=pow(i,2);//per este egal cu i la puterea 2
}
if(per==n)//daca n este egal cu per atunci n este patrat perfect
{
suma+=per;//valaorea variabilei suma se mareste cu +per
}
i=0;
per=0;
cout<<endl;
}
cout<<suma;//programul afiseaza suma numerelor care sunt patrate perfecte
return 0;
}
Explicație:
Raspuns (C):
#include <stdio.h>
#include <math.h>
int main() {
int x;
int suma = 0;
do {
scanf("%d", &x);
if ((int)sqrt(x) == sqrt(x))suma += x;
} while (x != 0);
printf("\nSuma numerelor patrate perfecte este %d", suma);
}
Explicatie :
sqrt(x) -> Returneaza o valoare reala care reprezinta radacina patrata a lui x
(int) -> Conversie explicita la tipul int : Converteste valoarea care urmeaza dupa (int) la tipul intreg. Eu il folosesc aici pentru a afla partea intreaga a valorii lui [tex]\sqrt{x}[/tex]. Puteam de asemenea folosi functia floor().
Un numar x natural este patrat perfect daca si numai daca [tex]\sqrt{x} =[ \sqrt{x}][/tex], unde [tex][\sqrt{x} ][/tex] reprezinta parte intreaga din x
Ai demonstratie in imaginea atasata.

Vă mulțumim pentru vizita pe platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de sprijin suplimentar, vă încurajăm să ne contactați. Revenirea dumneavoastră ne bucură, iar dacă v-a plăcut, nu uitați să adăugați site-ul nostru la favorite!