👤

Se citește un șir de numere până la apariția valorii 0. Să se afișeze suma numerelor ce reprezintă pătrat perfect.

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.

Vezi imaginea Andrei750238