Se citeşte de la tastatură un număr natural. Sa se decida dacă acesta poate fi scris ca şi suma de două patrate şi sa se afişeze toate soluţiile găsite.
Problema propusa si rezolvata de robert
Analiza Programului
Se verifica toate perechile de numere mai a caror suma este numarul dat daca sunt patrate perfecte.
Solutia, neoptinizata, primita de la un cititor (robert), caruia ii multumesc pentru implicare, este:
#include #include using namespace std; bool verif_nr(float nr) { bool patrat=false; if ((sqrt(nr) * sqrt(nr)) == nr) patrat=true; return patrat; } int main() { float nr, nr1, nr2=0; cout<>nr; for(nr1=2; nr1<=nr/2; nr1++) { if(verif_nr(nr1)) { nr2=nr-nr1; if(verif_nr(nr2)) cout<<nr<<"="<<sqrt(nr1)<<"^2"<<" + "<<sqrt(nr2)<<"^2"<<endl; } } return 0; }
Un voluntar pentru o solutie in c#??
Category: Uncategorized
Bogdan says:
Nu inteleg o chestie:
“if ((sqrt(nr) * sqrt(nr)) == nr)”
Ori suma ori produs?
zeltera says:
Acolo e verificarea daca numarul e patrat perfect. Nu am rulat codul, insa am presupu ca in c++ daca sqrt(nr) nu e numar intreg, patratul lui difera putin de numarul insusi (pe la vre-o zecimala). Daca presupunerea mea nu e corecta… rezolvarea nu e buna.
Poti propune tu o solutie?