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

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

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

Доброго времени суток. Начну немного издалека. Решил я заняться изучением какого-нибудь языка программирования из-за интереса и чисто для себя. Сначала решил изучать Си, так как сам давно и активно пользуюсь Linux и *BSD, но наткнулся на одно обсуждение, в котором говорилось, что появился такой язык, как rust, задача которого как раз состоит в том, чтобы заменить в будущем Си. Это меня заинтересовало и я подумал, что неплохо было бы ознакомиться с этим языком. Скачал учебник, начал читать. Оказалось всё мало понятным. Но написал по учебнику одну программу и даже пару строк от себя добавил, где смог. Дело в том, что учебник, как я понял, рассчитан на тех, кто уже знаком как минимум с одним языком программирования, поэтому его принцип таков - минимум объяснений и в бой, писать программу. По крайней мере мне так показалось. И та, программа, которая приводилась в учебники rust, называлась что-то типа "угадай число". Скачал я себе несколько каких-то небольших pdf'ок по программированию на Cи, почитал немного и, в конечном итоге, решил написать уже на Си эту самую программу "угадай число". Благо на Си всё как-то понятнее и родней. Программа, естественно простая, но у меня возникли кое-какие вопросы. Вот, собственно она.
#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();
}
Вопрос такой. Я хочу, чтобы при приближении к загаданному числу игрок получал что-то типа подсказки "Уже теплее". Но если я ввожу ещё один условный оператор, условием в котором для печати данного сообщения будет что-то типа b < 5 || b > 50, то происходит пересечение с предыдущими условиями, так как b < 5 уже входит в условие a > b и условие b > 50 уже входит в условие a < b. Подскажите, кто знает, как с этим бороться или где почитать на этот счёт.

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

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;
}

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

  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
Похожие ответы