Неправильно работает оператор IF ELSE

#include <iostream>
using namespace std;

int main()
{
    short a, b, res; 
    cout << "Input a: ";
    cin >> a;
    cout << "Input b: ";
    cin >> b; 
    if (a > b)
        res = 1 - b / a;
    else if (a == b)
        res = -10;
    else  
        res = (a - 5) / b;
    cout << "Result = "<< res;
    return 0;
}

В результате выводит 1 или 0. А мне нужно значение, что я сделал не так, подскажите?

Целые числа int «округляются всегда вниз» и просто так не превращаются в дробные float

1) Если а больше б, то разделить б на а — результат, естественно, будет меньше еденицы — то есть в памяти запишется как 0.
1-0 = 1. Тут почти всегда 1.

2) Если а = б, то выводится -10

3) То же самое, что и 1. Если б больше а, то а-5 делить на б. Тут почти всегда 0.

Если брать отрицательные числа, то результаты становятся разнообразнее

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.