Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

quirck
Статус: 1-й класс
Рейтинг: 595
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 120
∙ повысить рейтинг »
mklokov
Статус: 6-й класс
Рейтинг: 107
∙ повысить рейтинг »

∙ С / С++

Номер выпуска:1916
Дата выхода:03.07.2017, 12:45
Администратор рассылки:Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Подписчиков / экспертов:26 / 22
Вопросов / ответов:1 / 1

Консультация # 191193: Здравствуйте! У меня возникли сложности с таким вопросом: даны переменные a, b и с. Необходимо присвоить переменной с значение переменной a, если переменная a отрицательна и переменная b положительна, в противном случае значение переменной b. Я написала следующий вариант: if (a<0&&b...

Консультация # 191193:

Здравствуйте! У меня возникли сложности с таким вопросом:
даны переменные a, b и с.
Необходимо присвоить переменной с
значение переменной a, если переменная a отрицательна и переменная b положительна,
в противном случае значение переменной b.
Я написала следующий вариант:
if (a<0&&b>0) с=a;
else с = b;
Правильно?
Но спорим еще про такой вариант проверки:
if (b>0)
if (a<0 ) с=a;
else с = b;
К какому условию в данном случае относится else?
Разве в данном случае не вложенный if ?
Я читаю это так - если b>0 и если a<0 , то присвоить с=a.
Если b<0, то с = b.
Здесь else, мне кажется, распространяется только на первый if ?
Рассудите, пожалуйста! smile

Дата отправки: 27.06.2017, 16:03
Вопрос задал: pNod (1-й класс)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, pNod!

© Цитата:
if (a<0&&b>0) с=a;
else с = b;
Правильно?
Правильно
© Цитата:
Но спорим еще про такой вариант проверки:
Чтобы не было вопросов, полезно писать скобки.
Написанный вариант соответствует:
if (b>0)
{
  if (a<0 ) 
  {
    с=a;
  }
  else
  { 
    с = b;
  }
}

Так будет понятнее?
Конструкция, вообще говоря, не соответствует первому варианту
Если b будет <= 0, то c останется неопределенным!

Все же отвечу на вопросы:
© Цитата:
К какому условию в данном случае относится else?
ко второму, if (a<0)
© Цитата:
Разве в данном случае не вложенный if ?
вложенный-то вложенный, только работает не так
© Цитата:
Я читаю это так - если b>0 и если a<0 , то присвоить с=a.
В данном случае, да
© Цитата:
Если b<0, то с = b.
Не-а :)
© Цитата:
Здесь else, мне кажется, распространяется только на первый if ?
Как уже сказал, else относится ко второму if
Правильно будет так:
if (b>0)
{
  if (a<0 ) 
  {
    с=a;
  }
  else
  { 
    с = b;
  }
}
else
{ 
  с = b;
}
Или так:
if (b>0)
  if (a<0 ) 
    с=a;
  else
    с = b;
else
  с = b;

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 27.06.2017, 19:14
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное