Пересечение условий при выполнении условного оператора - C (СИ)
Формулировка задачи:
Доброго времени суток.
Начну немного издалека.
Решил я заняться изучением какого-нибудь языка программирования из-за интереса и чисто для себя.
Сначала решил изучать Си, так как сам давно и активно пользуюсь Linux и *BSD, но наткнулся на одно обсуждение, в котором говорилось,
что появился такой язык, как rust, задача которого как раз состоит в том, чтобы заменить в будущем Си. Это меня заинтересовало и я подумал, что неплохо было бы ознакомиться с этим языком. Скачал учебник, начал читать. Оказалось всё мало понятным. Но написал по учебнику одну программу и даже пару строк от себя добавил, где смог.
Дело в том, что учебник, как я понял, рассчитан на тех, кто уже знаком как минимум с одним языком программирования, поэтому его принцип таков - минимум объяснений и в бой, писать программу. По крайней мере мне так показалось.
И та, программа, которая приводилась в учебники rust, называлась что-то типа "угадай число".
Скачал я себе несколько каких-то небольших pdf'ок по программированию на Cи, почитал немного и, в конечном итоге, решил написать уже на Си эту самую программу "угадай число". Благо на Си всё как-то понятнее и родней.
Программа, естественно простая, но у меня возникли кое-какие вопросы.
Вот, собственно она.
Вопрос такой. Я хочу, чтобы при приближении к загаданному числу игрок получал что-то типа подсказки "Уже теплее".
Но если я ввожу ещё один условный оператор, условием в котором для печати данного сообщения будет что-то типа b < 5 || b > 50, то происходит пересечение с предыдущими условиями, так как b < 5 уже входит в условие a > b и условие b > 50 уже входит в условие a < b.
Подскажите, кто знает, как с этим бороться или где почитать на этот счёт.
Листинг программы
- #include <stdio.h>
- int main(void)
- {
- int a = 10;
- int b;
- printf("\n\nЯ загадал число. Попробуй его угадать!\n\n");
- printf("Введите ваше число: ");
- scanf("%d", &b);
- while ( a != b )
- {
- if ( a < b )
- {
- printf("Ваше число слишком БОЛЬШОЕ. Повторите попытку: ");
- scanf("%d", &b);
- }
- if ( a > b )
- {
- printf("Ваше число слишком маленькое. Повторите попытку: ");
- scanf("%d", &b);
- }
- }
- printf("Вы угадали! Секретное число это %d", a);
- getchar();
- getchar();
- }
Решение задачи: «Пересечение условий при выполнении условного оператора»
textual
Листинг программы
- d = a-b;
- while (d != 0)
- {
- if (d < -5) printf("Большое\n");
- else if (d < 0) printf("Большое, близко\n");
- else if (d < 5) printf("Маленькое, близко\n");
- else prinf("Маленькое\n");
- printf("Введите новое число: ");
- scanf("%d", &b);
- d = a-b;
- }
Объяснение кода листинга программы
- Сначала вводится значение переменной
a
и сохраняется в соответствующей переменной. - Затем вводится значение переменной
b
и сохраняется в соответствующей переменной. - Вычисляется разница между значениями переменных
a
иb
и результат сохраняется в переменнойd
. - Запускается цикл while, который будет выполняться до тех пор, пока значение переменной
d
не станет равным нулю. - Внутри цикла проверяется значение переменной
d
. - Если
d
меньше -5, то выводится сообщениеБольшое
. - Если
d
меньше 0 и больше или равно -5, то выводится сообщениеБольшое, близко
. - Если
d
меньше 5 и больше или равно 0, то выводится сообщениеМаленькое, близко
. - Если
d
меньше 5 и больше или равно 0, то выводится сообщениеМаленькое
. - После вывода сообщения запрашивается ввод нового числа и сохраняется в переменной
b
. - Вычисляется новое значение переменной
d
как разница между значениями переменныхa
иb
. - Цикл while повторяется с шага 5.
- Код выполняется до тех пор, пока значение переменной
d
не станет равным нулю. - Если ввод числа некорректен (например, ввод символов вместо числа), то программа может завершиться с сообщением об ошибке.
- Ввод новых чисел продолжается до тех пор, пока не будет достигнуто условие цикла while.
- Значения переменных
a
иb
обновляются каждый раз при вводе нового числа. - Выводимые сообщения зависят от текущего значения переменной
d
. - Если значение переменной
d
становится равным нулю, то цикл while завершается. - Если ввод числа некорректен, программа может завершиться с сообщением об ошибке.
- Код может быть оптимизирован или изменен для улучшения его функциональности или эффективности.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д