Пересечение условий при выполнении условного оператора - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Начну немного издалека. Решил я заняться изучением какого-нибудь языка программирования из-за интереса и чисто для себя. Сначала решил изучать Си, так как сам давно и активно пользуюсь Linux и *BSD, но наткнулся на одно обсуждение, в котором говорилось, что появился такой язык, как rust, задача которого как раз состоит в том, чтобы заменить в будущем Си. Это меня заинтересовало и я подумал, что неплохо было бы ознакомиться с этим языком. Скачал учебник, начал читать. Оказалось всё мало понятным. Но написал по учебнику одну программу и даже пару строк от себя добавил, где смог. Дело в том, что учебник, как я понял, рассчитан на тех, кто уже знаком как минимум с одним языком программирования, поэтому его принцип таков - минимум объяснений и в бой, писать программу. По крайней мере мне так показалось. И та, программа, которая приводилась в учебники rust, называлась что-то типа "угадай число". Скачал я себе несколько каких-то небольших pdf'ок по программированию на Cи, почитал немного и, в конечном итоге, решил написать уже на Си эту самую программу "угадай число". Благо на Си всё как-то понятнее и родней. Программа, естественно простая, но у меня возникли кое-какие вопросы. Вот, собственно она.
Листинг программы
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. int a = 10;
  5. int b;
  6. printf("\n\nЯ загадал число. Попробуй его угадать!\n\n");
  7. printf("Введите ваше число: ");
  8. scanf("%d", &b);
  9. while ( a != b )
  10. {
  11. if ( a < b )
  12. {
  13. printf("Ваше число слишком БОЛЬШОЕ. Повторите попытку: ");
  14. scanf("%d", &b);
  15. }
  16. if ( a > b )
  17. {
  18. printf("Ваше число слишком маленькое. Повторите попытку: ");
  19. scanf("%d", &b);
  20. }
  21. }
  22. printf("Вы угадали! Секретное число это %d", a);
  23. getchar();
  24. getchar();
  25. }
Вопрос такой. Я хочу, чтобы при приближении к загаданному числу игрок получал что-то типа подсказки "Уже теплее". Но если я ввожу ещё один условный оператор, условием в котором для печати данного сообщения будет что-то типа b < 5 || b > 50, то происходит пересечение с предыдущими условиями, так как b < 5 уже входит в условие a > b и условие b > 50 уже входит в условие a < b. Подскажите, кто знает, как с этим бороться или где почитать на этот счёт.

Решение задачи: «Пересечение условий при выполнении условного оператора»

textual
Листинг программы
  1. d = a-b;
  2.  
  3. while (d != 0)
  4. {
  5.   if (d < -5) printf("Большое\n");
  6.   else if (d < 0) printf("Большое, близко\n");
  7.   else if (d < 5) printf("Маленькое, близко\n");
  8.   else prinf("Маленькое\n");
  9.  
  10.   printf("Введите новое число: ");
  11.   scanf("%d", &b);
  12.   d = a-b;
  13. }

Объяснение кода листинга программы

  1. Сначала вводится значение переменной a и сохраняется в соответствующей переменной.
  2. Затем вводится значение переменной b и сохраняется в соответствующей переменной.
  3. Вычисляется разница между значениями переменных a и b и результат сохраняется в переменной d.
  4. Запускается цикл while, который будет выполняться до тех пор, пока значение переменной d не станет равным нулю.
  5. Внутри цикла проверяется значение переменной d.
  6. Если d меньше -5, то выводится сообщение Большое.
  7. Если d меньше 0 и больше или равно -5, то выводится сообщение Большое, близко.
  8. Если d меньше 5 и больше или равно 0, то выводится сообщение Маленькое, близко.
  9. Если d меньше 5 и больше или равно 0, то выводится сообщение Маленькое.
  10. После вывода сообщения запрашивается ввод нового числа и сохраняется в переменной b.
  11. Вычисляется новое значение переменной d как разница между значениями переменных a и b.
  12. Цикл while повторяется с шага 5.
  13. Код выполняется до тех пор, пока значение переменной d не станет равным нулю.
  14. Если ввод числа некорректен (например, ввод символов вместо числа), то программа может завершиться с сообщением об ошибке.
  15. Ввод новых чисел продолжается до тех пор, пока не будет достигнуто условие цикла while.
  16. Значения переменных a и b обновляются каждый раз при вводе нового числа.
  17. Выводимые сообщения зависят от текущего значения переменной d.
  18. Если значение переменной d становится равным нулю, то цикл while завершается.
  19. Если ввод числа некорректен, программа может завершиться с сообщением об ошибке.
  20. Код может быть оптимизирован или изменен для улучшения его функциональности или эффективности.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы