Другие языки программирования и технологии

Задача по программированию

Задача по программированию, не могу решить В небоскрёбе N этажей и всего один подъезд, на каждом этаже по 3 увартиры, лифт может останавливаться только на нечётных этажах. Человек садиться в лифт и набирает номер нужной ему квартиры M. На какой этаж должен доставить лифт пассажира? P.S. Задача по Qbasic, но можно и на Pascal...
Элементарно же:
Значит вначале пользователь вводит этот номер M типа Integer.
Если на каждом этаже по 3 квартиры, то понятно, что на 1ом этаже квартиры с 1-ой по 3-ю, на 2ом - с 4-ой по 6-ую, и т д.
Значит, чтобы узнать, на каком этаже находится некоторая квартира, надо её номер поделить на три. При этом будем проверять заданное M на кратность трём. То есть проверим, является ли остатком от целочисленного деления на 3 число ноль. Если да - всё окей, если нет - всё равно делим, но потом к результату прибавим единицу.
То есть, если пользователь ввёл номер 5, то сначала целочисленно делим на 3, получается 1, а потом ещё прибавляем 1 и получается 2 - правильный номер этажа.
Всё, с необходимым этажом разобрались. Теперь смотрим, как должен ехать лифт.

Ну, если номер этажа получился нечётный, то тут, ясное дело, лифт на него и поедет.
Если же чётный, тогда везём на соседний. При этом неплохо бы учесть, что вообще-то спускаться легче чем подниматься, поэтому везём на один этаж выше чем нужно, а не ниже ;)
Тут ещё конечно надо учесть, что если нужная квартира находится на самом верхнем этаже, то подняться ещё выше не получится, поэтому тут конечно уже придётся заставить человека топать вверх по лестнице.
Ну а если получился 1й этаж, то и ехать никуда не надо.
ВФ
Вася Феоктистов
431
Лучший ответ
Андрей Щебельников ahahahahah shut up fucking trash)))))
Solo Vey на ноль ебучку костя ебанный
var
N,M,X,Y:integer;
begin
write('N=');
readln(N); //Вводим кол-во этажей здания
write('M=');
readln(M); //Вводим номер нужной квартиры
if M<=(N*3) then
//Если номер квартиры есть в здании с N-эатажами по 3 квартиры на этаж,
//то продолжаем.. .
begin
X:=(M div 3)+1; // определяем этаж для квартиры номер M
//Если этаж квартиры чётный, увеличиваем на 1
if (X div 2)=(X/2) then X:=X+1;
//Если этаж получился больше, чем их всего в здании,
//ставим максимальный нечетный этаж в здании.
if X>N then X:=X-2;
writeln('X=',X); // Выводим ответ.
readln;
end;
end.
HK
Husniddin Kamoldinov
3 249
Husniddin Kamoldinov Y - лишняя переменная....
с сохранением форматирования здесь: http://pastie.org/688721
без сохранения ниже:

var N,M:integer;
x:integer;

begin
write('kol-vo etazhey N = ');
read(N);
write('nomer kvartiri M = ');
read(M);

x := (M-1) div 3 + 1;

if (x > N) or (x < 1) then
writeln('takoy kvatiri net');

writeln('x = ',x);

if x mod 2 = 0 then
if x = N then x := x - 1
else x := x + 1;

writeln('lift edet na etazh x = ',x);

end.