• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zadanie; Trójką pitagorejską nazywa się w matematyce trzy liczby naturalne a,b,c spełniające warunek...

0 głosów
1,237 wizyt
pytanie zadane 7 grudnia 2015 w C i C++ przez Placidus Użytkownik (580 p.)

Trójką pitagorejską nazywa się w matematyce trzy liczby naturalne a,b,c
spełniające warunek a^2 + b^2 = c^2. Napisać program wczytujący 3 liczby
naturalne i sprawdzający czy tworzą one trójkę pitagorejską.

 

Posiadam takie rozwiązanie;

a)jednak nie rozumiem dla czego są te 3 róznę ify skoro ma spełniać tylko ten jeden warunek a^2 + b^2 = c^2

b) nie miałem nigdy doczynienia z funkcją bool może ma ktoś jakiś namiar na fajne wytłumaczenie ?

 

#include <iostream>
using namespace std;

int main()
{
    int a, b, c;
    bool wynik=false;

    cout << "Podaj trzy rozne liczby naturalne: ";
    cin>>a>>b>>c;

    if (a*a + b*b == c*c or a*a + c*c == b*b)   wynik=true;
    if (b*b + a*a == c*c or b*b + c*c == a*a)   wynik=true;
    if (c*c + a*a == b*b or c*c + b*b == a*a)   wynik=true;

    if (wynik) cout<<"Podane liczby tworza trojke pitagorejska"<<endl;
    else       cout<<"Podane liczby nie tworza trojki pitagorejskiej"<<endl;

    return 0;
}

 

3 odpowiedzi

+1 głos
odpowiedź 7 grudnia 2015 przez pietrzakacper Mądrala (7,480 p.)
wybrane 7 grudnia 2015 przez Placidus
 
Najlepsza

a) Trzy różne warunki są ponieważ każda wprowadzona liczba może być a, b lub c w zależności od wartości. Jeśli wprowadzisz wartości 10, 8, 6 to pierwszy warunek nie jest prawdziwy, ale trzeci już tak.

b) bool to typ logiczny który może przyjąć tylko dwie wartości true lub false

komentarz 7 grudnia 2015 przez pietrzakacper Mądrala (7,480 p.)

a) Tutaj dopowiem, że każda liczba  może być a,b lub c ze wzoru na trójkę pitagorejską oczywiście. Czyli mimo tego, że w programie jest przypisana do zmiennej a to ze wzoru może być to c.

komentarz 16 stycznia 2016 przez CichoCiemny Początkujący (480 p.)

A czy taki zapis nie jest poprawny? 

#include <iostream>

using namespace std;

int a,b,c;

int main()
{

            cin >> a >> b >> c;


            if ((a*a)+ (b*b) == c*c || (b*b)+(c*c) == a*a || (a*a)+(c*c) == b*b)
                cout << "TAK"<<endl;
            else
            {
                cout << "NIE"<<endl;
            }

return 0;
}

 

komentarz 17 stycznia 2016 przez pietrzakacper Mądrala (7,480 p.)
Jak najbardziej, od kodu który podesłał kolega zadający pytanie różni się tym, że korzystasz z tego, że dodawanie jest przemienne.
0 głosów
odpowiedź 16 stycznia 2016 przez maciek061 Gaduła (4,490 p.)
Czy tu chodzi o to, że a*a+b*b=c*c?

Jeśli tak to wystarczy to: http://wklej.org/id/1908131/

A jeśli chodzi o to że pierwiatek kwadraowy zsumowanych każdych dwóch liczb daje pierwiatek kwadratowy pozostałej liczby to będzie to wyglądało tak: http://wklej.org/id/1908134/

 

A jeśli po prostu jedna z tych kombinacji to wygląda to tak: http://wklej.org/id/1908136/

W sumie nie wiem po co tu bool.
0 głosów
odpowiedź 17 stycznia 2016 przez Schizohatter Nałogowiec (39,600 p.)
Można to ewentualnie śmignąć jednym ifem, pod warunkiem, że najpierw się (np. podczas wprowadzania liczb) sprawdzi, która liczba jest największa. c musi być największe. Wtedy znamy c no i już wystarczy tylko jeden if.

Podobne pytania

0 głosów
3 odpowiedzi 2,712 wizyt
pytanie zadane 7 listopada 2015 w C i C++ przez aki3130pl Nowicjusz (140 p.)
0 głosów
1 odpowiedź 222 wizyt
0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 16 listopada 2018 w C i C++ przez gorgonkowa Obywatel (1,810 p.)

93,604 zapytań

142,529 odpowiedzi

322,995 komentarzy

63,090 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...