Pomoc w zadaniu (raczej proste)

0

Mam problem z zadaniem:

Napisać program, który przyjmuje od użytkownika trzy liczby rzeczywiste, sprawdza, czy mogą one być bokami trójkąta i wyświetla odpowiedni komunikat. Ponadto, jeśli mogą tworzyć trójkąt, to wyświetla następujące informacje o tym trójkącie:

Czy jest równoboczny?
Czy jest równoramienny?
Czy jest prostokątny?

To co udało mi się stworzyć:

#include <iostream>
#include <cmath>

using namespace std;

int main(){
    int a, b, c;
    cout << "Podaj trzy dowolne liczny: " << endl;
    cin >> a;
    cin >> b;
    cin >> c;
    if(a+b>c && a+c>b && b+c>a){
        cout << "Podane liczby moga stworzyc trojkat." << endl;
            if(a==b==c){
                cout << "Jest to trojkat rownoboczny" << endl;
            }
    }
    else{
        cout << "Podane liczby nie moga stworzyc trojkata." << endl;
    }
    }

Problem mam taki, że jeżeli spełnię warunek i wpiszę np. liczby 5, 5, 5 to nie wyskakuje mi informacja, że trójkąt jest równoboczny. Gdzie jest błąd? Nawiasy? czy źle wpisuję if'a?

0

Jeśli nie wykonuje się instrukcja warunkowa, oznacza to, że warunek nie jest spełniony. Spróbuj zapisać go inaczej.

4

Warunek na równość nie może taki być.

a==b==c to to samo co ((a == b) == c). Z porównania a == b wychodzi wartość bool konwertowana na 1 albo 0, która jest potem porównywana z c.
To zupełnie nie to co ma być. Ma być a == b && b == c.

0

Czy mógłbyś podać jakiś zestaw wartości a,b,c dla których warunek: if(a+b>c && a+c>b && b+c>a) powinien być spełniony?

2
 if(a==b==c) 

tu jest Twoj problem
musisz zrobic

 if(a==b && a == c) 
1

Edit: nad moim postem był post z kodem. Ten post został usunięty i teraz mój post wygląda głupio.

Ten else na końcu nie jest dobry. Przecież jeżeli pierwszy warunek nie jest spełniony to trójkąt nie może już być równoboczny. Miałeś jeszcze sprawdzić, czy trójkąt jest prostokątny i do tego użyj Twierdzenia Pitagorasa: sprawdź, czy suma kwadratów długości dwóch krótszych boków jest równa kwadratowi długości najdłuższego boku.

Poza tym program miał przyjmować liczby rzeczywiste.

0

Poprawione:

#include <iostream>
#include <cmath>

using namespace std;

int main(){
    float a, b, c;
    cout << "Podaj trzy dowolne liczby: " << endl;
    cin >> a;
    cin >> b;
    cin >> c;
    if(a+b>c && a+c>b && b+c>a){
        cout << "Podane liczby moga stworzyc trojkat." << endl;
            if(a==b && b==c){
                cout << "Jest to trojkat rownoboczny" << endl;
            }
            else{
                cout << "Nie jest to trojkat rownoboczny" << endl;
            }
            if(a==b || a==c || b==c){
                cout << "Jest to trojkat rownoramienny" << endl;
            }
            else{
                cout << "Nie jest to trojkat rownoramienny" << endl;
            }
            if(c*c==a*a+b*b || a*a==c*c+b*b || b*b==a*a+c*c){
                cout << "Jest to trojkat prostokatny" << endl;
            }
            else{
                cout << "Nie jest to trojkat prostokatny" << endl;
            }
    }
    else{
        cout << "Podane liczby nie moga stworzyc trojkata." << endl;
    }
    }

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