Jak spełnić warunek dla liczb x,y żeby wyswietlil napis jeśli róznia sie o mniej niz 1.0/100

0

tresć :zmodifikuj program, aby po wydrukowaniu informacji, ktora z liczb jest mniejsza, drukował komunikat Liczby są równe równe, jeśli różnią się o mniej niz 1.0/100.

nie wiem jaki dac warunek zeby to spelnial probowalem wieloma operatorami ale nie moge sobie poradzic.

int main()
{
double liczba_1, liczba_2;

while (cin >> liczba_1 >> liczba_2)
{
if ( liczba_1 > liczba_2 )
{
    cout << "Mniejsza z liczb to: " << liczba_2 << endl;

        if ( Nie wiem )
            cout << "liczby sa prawie rowne" << endl;

    cout << "Wieksza z liczb to: " << liczba_1 << endl;
}

else if ( liczba_1 <  liczba_2  )
{
    cout << "Mniejsza z liczb to: " << liczba_1 << endl;

        if ( Nie wiem )
            cout << "liczby sa prawie rowne" << endl;

    cout << "Wieksza z liczb to: " << liczba_2 << endl;
}
else if ( liczba_1 == liczba_2 )
    cout << "Liczby sa rowne" << endl;

}
return 0;

}

0

jesli liczba_2 jest wieksza:

if ((liczba_2 - liczba_1) / liczba_2 <= 0.01) 

jesli liczba_1 jest wieksza:

if ((liczba_1 - liczba_2) / liczba_1 <= 0.01) 

coś takiego?

0

nie dziala :/ tzn dziala ale wszystkie liczby sa wtedy uwazane ze sa blisko

0

niestety dalej to samo

0

nie dziala wgl nie pokazuje ze sa blisko

0

Jak Ty to testujesz? Napisałem krótki srypt pythonowy żeby to sprawdzić i wydaje się działać poprawnie. Może ja czegoś nie rozumiem.
Jakie liczby wrzucasz do testu?

liczba_1 = 100
liczba_2 = 99
liczba_3 = 50
liczba_4 = 1

a = (liczba_1 - liczba_2) / liczba_1
b = (liczba_1 - liczba_3) / liczba_1
c = (liczba_1 - liczba_4) / liczba_1
if a <= 0.01:
    print('Liczby są prawie rowne')
    print(f'a={a}')
if b <= 0.01:
    print('Liczby są prawie rowne')
    print(f'b={b}')
if c <= 0.01:
    print('Liczby są prawie rowne')
    print(f'c={c}')

Output:

Liczby są prawie rowne
a=0.01
0

dla liczb dodatnich nie pojawia sie komunikat ze sa blisko siebie a dla ujemnych wszystkich sie pojawia

0

Hej,
może tak ??

if abs(x-y) <= 0.01 then...

Pzdr :)

0

nie chce uzywam abs bo jeszcze w ksiazce tego nie bylo i nie chce wyprzedzac musi sie jakos dac zrobic bez wartosci bezwzględnej

1
if x-y <= 0.01 and y-x >= -0.01
0

int main()
{
double x, y;

while (cin >> x >> y)
{
if ( x > y )
{
    cout << "Mniejsza z liczb to: " << y << endl;

        if ((x - y <= 0.01) && (y - x >= -0.01 ))
            cout << "liczby sa prawie rowne" << endl;

    cout << "Wieksza z liczb to: " << x << endl;
}

else if ( x < y )
{
    cout << "Mniejsza z liczb to: " << x << endl;

        if (( y - x <= 0.01 ) && ( x - y >= -0.01 ))
            cout << "liczby sa prawie rowne" << endl;

    cout << "Wieksza z liczb to: " << y << endl;
}
else if ( x == y )
    cout << "Liczby sa rowne" << endl;

}
return 0;

}

W takiej postaci nie dziala a na odwrot dla wszystkich liczb

0

ogarnij po kolei takie warunkowanie może:

  1. if ((x - y <= 0.01) && (y - x >= -0.01 ))
  2. x < y
  3. y > x

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