Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2011, 20:17   #1
Ins1De
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 34
По умолчанию Небоскрёб

В небоскребе N этажей и всего один подъезд на каждом этаже по четыре квартиры, лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужный ему квартиры M. На какой этаж должен доставить лифт пассажира? Что должен сообщить динамик на выходе: "Спуститься на один этаж", "Поднимитесь на один этаж".

Цитата:
int N, M, x;
N=CSpinEdit1->Value;
M=CSpinEdit2->Value;
if (N%4==0)
x=M/4;
else x=M/4+1;
if (x>N)
Label1->Caption="Нет этажа";
else
if (x/2==0)
Label1->Caption="Квартира на этом этаже";
else
if (N>x)
Label1-> Caption="Спуститься";
else
Label1-> Caption="Подняться";
Программа работает не правильно..помогите найти ошибку

Последний раз редактировалось Ins1De; 12.11.2011 в 20:32.
Ins1De вне форума Ответить с цитированием
Старый 13.11.2011, 12:37   #2
artyom256
Новичок
Джуниор
 
Регистрация: 13.11.2011
Сообщений: 10
По умолчанию

>> if (N%4==0)
Зачем проверять количество этажей на кратность четырем?
Не очень понял, что Вы имели ввиду, но вот как я вижу решение этой задачи:

Номер этажа получается так:
x = M/4 + 1;

Далее, если номер этажа чётный, то уменьшаем его на единицу:
if(x%2 == 0) x--;
и сообщаем, что нужно подняться на один этаж вверх (ведь нулевого этажа у нас не будет, а первый существует всегда);
иначе сообщаем, что мы на требуемом этаже.
artyom256 вне форума Ответить с цитированием
Старый 13.11.2011, 12:46   #3
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от artyom256 Посмотреть сообщение
Номер этажа получается так:
x = M/4 + 1;
M = 4
x = ?
Vago вне форума Ответить с цитированием
Старый 13.11.2011, 13:08   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а мне кажется, что номер этажа можно получить по формуле:
X := int((M-1)/4) + 1;
дальше уже элементарно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2011, 13:57   #5
artyom256
Новичок
Джуниор
 
Регистрация: 13.11.2011
Сообщений: 10
По умолчанию

Да, верно) Забыл поправку на нулевую квартиру))))
artyom256 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц