Пересечение условий при выполнении условного оператора - 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 завершается. - Если ввод числа некорректен, программа может завершиться с сообщением об ошибке.
- Код может быть оптимизирован или изменен для улучшения его функциональности или эффективности.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д