Dlaczego else nie działa?

0

Tak jak w temacie, else nie działa. Wpisuje 2 takie same cyfry, ale wyjście mówi że jedna jest mniejsza od drugiej.

Wyjście
Wyjście

Kod

// Program porównujący liczby 
#include "std_lib_facilities.h"
int main()
{
	cout << "Podaj 2 liczby calkowite\n";
	int val1 = 0;
	int val2 = 0;
	while (cin >> val1 && cin >> val2) {

		{
			if (val1 > val2)
				cout << "Liczba " << val1 << " jest wieksza od " << val2 << '\n';
			else
				cout << "Liczba " << val1 << " jest mniejsza od " << val2 << '\n';
		}

		cout << "Suma tych liczb to " << val1 + val2 << '\n';
		
		{
			if (val1 != val2)
				cout << "Te liczby roznia sie od siebie!\n";
			else
				cout << "Te liczby sa takie same!\n";
		}

		cout << "Iloczyn tych 2 liczb to " << val1 * val2 << '\n';

		{
			if (val1 == val2)
				cout << "Proporcje tych liczb to " << val1 << " == " << val2 << '\n';
		}

		{
			if (val1 > val2)
				cout << "Proporcja tych dwoch liczb to: " << val1 << " > " << val2 << '\n';
			else
				cout << "Proporcja tych dwoch liczb to: " << val1 << " > " << val2 << '\n';
		}
	}
}
7

No bo nie sprawdzasz czy są równe. Jak liczba nie jest większa od drugiej, to nie oznacza, że jest mniejsza ;)

2
            if (val1 > val2)
                cout << "Liczba " << val1 << " jest wieksza od " << val2 << '\n';
            else
                cout << "Liczba " << val1 << " jest mniejsza od " << val2 << '\n';

Po polsku:
jeśli a jest większe od b to napisz "a jest większe od b"
we wszystkich pozostałych przypadkach napisz "a jest mniejsze od b"

Program robi to co mu każesz. Masz trzy przypadki, a obsługujesz dwa

2
Dewolf napisał(a):

Tak jak w temacie, else nie działa. Wpisuje 2 takie same cyfry, ale wyjście mówi że jedna jest mniejsza od drugiej.

Po pierwsze, to liczby a nie cyfry.

Kod

			if (val1 > val2)
				cout << "Liczba " << val1 << " jest wieksza od " << val2 << '\n';
			else
				cout << "Liczba " << val1 << " jest mniejsza od " << val2 << '\n';

Po drugie działa tak, jak napisałeś. Czy jest WIĘKSZA? nie jest -> else przeciwny komunikat.

Nigdzie w warunku nie uwzględniłeś równości. Albo trzeci if, albo zmienić tekst na "mniejsza lub równa"
0

Tak btw:

        {
            if (val1 == val2)
                cout << "Proporcje tych liczb to " << val1 << " == " << val2 << '\n';
        }

        {
            if (val1 > val2)
                cout << "Proporcja tych dwoch liczb to: " << val1 << " > " << val2 << '\n';
            else
                cout << "Proporcja tych dwoch liczb to: " << val1 << " > " << val2 << '\n';
        }

nie lepiej zrobić "if( val1 == val2)" i zamiast kolejnego ifa to iść dalej i dodać "else if(val1 > val2)"

No i ten drugi if wykonuje to samo co jego else. Chyba chodziło Ci o coś takiego:

            if (val1 > val2)
                cout << "Proporcja tych dwoch liczb to: " << val1 << " > " << val2 << '\n';
            else
                cout << "Proporcja tych dwoch liczb to: " << val1 << " < " << val2 << '\n';
1

Dziękuje wszystkim za pomoc, dopiero po większym przeanalizowaniu kodu zrozumiałem swój logiczny błąd, to chyba efekt mało efektywnego snu 😂

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