if -problem z kolejnoscia wykonywania działan

0

Gdzie w warunku popełniłem błąd, że nie wykonuje się ciało ifa

    int a, b, c ; // zapomnialem dodac wczesniej 
    cout << "Wprowadz 3 odcinki aby sprawdzic czy da sie z nich zbudowac trojkat prostokatny: \n";
    cin >> a >> b >> c;
    
    if((pow(a,2) + pow(b,2)) == pow(c,2))
        cout << "Da sie zbudowac trojat prostokatny z podanych odcinkow\n";
    else
        cout << "Nie da sie zbudowac trojkata prostokatnego z tych odcinkow!\n";

    cout << pow(a,2) + pow(b,2) << endl;
    cout << pow(c,2); 

user image

z góry dziekuje za odpowiedz i pozdrawiam

2

Taki urok liczb zmiennoprzecinkowych. Polecam lekturę artykułu o takich liczbach Zasada - nie porównujemy takich liczb operacją ==.

0

musiało mi uciąć cześć kodu,
co śmieszne abc są typu int ;)

2

Ale pow zwraca double.

2
 if((a*a + b*b) == c*c) 

Powinno pomóc.

1
#include <iostream>

using namespace std;

int main(void) {
    unsigned long a;
    unsigned long b;
    unsigned long c;
    cout << "Wprowadz 3 odcinki aby sprawdzic czy da sie z nich zbudowac trojkat prostokatny: \n";

    cin >> a >> b >> c;
         
    if((a * a + b * b) == (c * c))
        cout << "Da sie zbudowac trojat prostokatny z podanych odcinkow\n";
    else
        cout << "Nie da sie zbudowac trojkata prostokatnego z tych odcinkow!\n";
                 
    cout << a * a + b * b << endl;
    cout << c * c; 
}

http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

0

Dziękuję za odpowiedzi widać brzytwa Ockhama jak zawsze niezastąpiona

Ale pow zwraca double.

if((int)pow(a,2) + (int)pow(b,2) == (int)pow(c,2))
w takim razie myslalem ze rzutowanie z starego C powinno załatwić sprawe a nie załatwia ;)

dziękuję za artykuły już sie za nie biorę, może rozwieją moje wątpliwości

2

jeśli chcesz zostać przy pow() to:

  if(floor((pow(a,2) + pow(b,2))) == floor(pow(c,2))) 
2

Wszystkie podane rozwiązania są błędne:

  • użytkownik może podać największą długość na początku (a=5, b=3, c=4).
  • użytkownik może podać liczby ujemne.
0

Wszystkie podane rozwiązania są błędne:

  • użytkownik może podać największą długość na początku (a=5, b=3, c=4).
  • użytkownik może podać liczby ujemne.

Tak wiem, ale nie chciałem zamieszczać wszystkiego :), tylko kod z problemem

1 użytkowników online, w tym zalogowanych: 0, gości: 1