C++ per trovare terne pitagoriche

di il
6 risposte

C++ per trovare terne pitagoriche

Ciao a tutti, mi dilettavo a creare un programma per trovare terne pitagoriche, ossia tre numeri tali che il quadrato del primo più il quadrato del secondo dia il quadrato del terzo. Questo è il codice:
#include <iostream>
#include <cmath>
#include <string>
#include <stdlib.h>
using namespace std;

int main()
{
float a,b,c,d,e,f,g,h;
cout << endl << "Trovo terne pitagoriche con questa formula: a²-b²; 2ab; a²+b²." << endl << endl;
cout << "Scrivi il valore di a ";
cin >> a;
cout << endl;
cout << "Scrivi il valore di b ";
cin >> b;
cout << endl;
c = a*a;
d = b*b;
e = c-d;
f = 2*a*b;
g = c-d;
h = c+d;
cout << "La terna equivale a " << g << "; " << f << "; " << h << endl << endl;
}

Ho un problema però. Se provate a compilarlo e a lanciarlo noterete che se come valore di a 3 e valore di b 4 da la terna -7; 24; 25.
Sapreste dirmi dove ho sbagliato?
Grazie in anticipo.

6 Risposte

  • Re: C++ per trovare terne pitagoriche

    In teoria la terna giusta da 7;24;25... I numeri negativi non sono ammessi.
  • Re: C++ per trovare terne pitagoriche

    Dovresti verificare che a sia maggiore di b e in caso contrario swappare a con b, altrimenti a^2-b^2 sarà sicuramente negativo; in alternativa potresti semplicemente invertire il segno di e e g (ma perchè hai due variabili per la stessa cosa, forse una svista?) se negativi.
  • Re: C++ per trovare terne pitagoriche

    Puoi trovare spunti interessanti qui devi però riuscire a risolvere il quesito che ti viene proposto
  • Re: C++ per trovare terne pitagoriche

    Grazie, comunque si era una svista. Ora provo a fare quel quesito.
  • Re: C++ per trovare terne pitagoriche

    Emh mi puoi aiutare ancora?
    Volevo creare un codice per risolvere quel problema. Però compilandolo mi da degli errori...
    Mi spiegheresti cosa sbaglio?
    Questo è il codice:
    #include <iostream>
    #include <cmath>
    int main()
    {
    float a,b,c,d,e,f,g,h,i,l;
    a = b+c+d;
    e = b*b;
    f = c*c;
    g = e+f;
    cout << e << f << g << endl;
    h = sqrt(g);
    i = sqrt(f);
    l = sqrt(e);
    cout << l << i << h << endl;
    }
    Sicuramente l'errore è una cavolata, io però ho appena iniziato quindi sarà sicuramente una cosa che non conosco...
  • Re: C++ per trovare terne pitagoriche

    Mancava using namespace std; sono un tonto, fa nulla...
Devi accedere o registrarti per scrivere nel forum
6 risposte