Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Numar suma de patrate perfecte

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?

    April 9, 2012 at 9:51 am
    • 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?

      April 9, 2012 at 10:03 am

Your email address will not be published. Required fields are marked *

*