Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.03.2011, 15:31
cash cash вне форума
Прохожий
 
Регистрация: 15.03.2011
Сообщения: 35
Репутация: 10
По умолчанию Помогите решить задачу

В небоскребе N этажей и всего один подъезд; на каждом этаже по 3 квартиры; лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужной ему квартиры М. На какой этаж должен доставить лифт пассажира?
Ответить с цитированием
  #2  
Старый 19.03.2011, 15:45
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

накалякал что то:
Код:
var
nujnaya_kvartira:integer;
etajey_v_dome:integer;
nujnuy_etaj:integer;
begin
etajey_v_dome:=23;
nujnaya_kvartira:=14;
nujnuy_etaj:=nujnaya_kvartira div 3;
if nujnuy_etaj mod 2<>0 then
ShowMessage('Нужно выйти на '+inttostr(nujnuy_etaj)+' этаже')
else
ShowMessage('Нужно выйти на '+inttostr(nujnuy_etaj-1)+' этаже');
end;
__________________
Ответить с цитированием
  #3  
Старый 19.03.2011, 16:19
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от eXplorer
накалякал что то:
Код:
var
nujnaya_kvartira:integer;
etajey_v_dome:integer;
nujnuy_etaj:integer;
begin
etajey_v_dome:=23;
nujnaya_kvartira:=14;
nujnuy_etaj:=nujnaya_kvartira div 3;
if nujnuy_etaj mod 2<>0 then
ShowMessage('Нужно выйти на '+inttostr(nujnuy_etaj)+' этаже')
else
ShowMessage('Нужно выйти на '+inttostr(nujnuy_etaj-1)+' этаже');
end;
eXplorer а если мне нужна 5-я квартира то по твоим нехитрым расчетам у меня покажет 1 этаж, хотя должен быть второй. Тут все таки надо скорей всего Round-ом пользоваться
Ответить с цитированием
  #4  
Старый 19.03.2011, 16:21
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

так в условии задачи... лифт на четных не останавливается?
если нужна пятая квартира как говорится дуй пешком)
__________________

Последний раз редактировалось eXplorer, 19.03.2011 в 16:24.
Ответить с цитированием
  #5  
Старый 19.03.2011, 16:27
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

а если 6-я)))))))))))
Ответить с цитированием
  #6  
Старый 19.03.2011, 16:30
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

дак а разница какая 6-ая или 5-ая (этаж то один... и топать что с третего что с первого одинаково)
да и в условии задачи об этом не было сказано
и теоритически мне кажется проще и быстрее пешком подняться на второй этаж, чем доехать на лифте до третьего и спуститься на второй
__________________

Последний раз редактировалось eXplorer, 19.03.2011 в 16:36.
Ответить с цитированием
  #7  
Старый 19.03.2011, 16:35
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

.................................
5 div 3 =1
6 div 3 =2


то есть квартиры находятся на одном этаже, но если ты все таки поедешь на 5 то тебе программка скажет, молодой человек выйди на 1-ом этаже. ))))
Ответить с цитированием
  #8  
Старый 19.03.2011, 16:43
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

Цитата:
Сообщение от Pilot_Red
.................................
5 div 3 =1
6 div 3 =2


то есть квартиры находятся на одном этаже, но если ты все таки поедешь на 5 то тебе программка скажет, молодой человек выйди на 1-ом этаже. ))))

у меня (смотри внимательнее) стоит условие что если при челочисленном делении (div) в ответе получается четное число ты я вычитаю 1)))... тоесть если ты нажмешь на 6 тоже лифт тебе скажет выйти на первом если уж не нравиться то что при нажатии на квартиру второго этажа выводится сообщение что нужно выйти на первом тогда можно сделать ещё одно условие... что если получается в результате "1" выводить сообщение что "нужно пройтись пешком" ... зачем в этом случае на третий этаж ехать непойму?
__________________
Ответить с цитированием
  #9  
Старый 19.03.2011, 16:57
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Мля, у меня щас рак мозга будет)) после синьки голова не варит вообще
НО... допустим ты живешь в 14 кв. а я в 15-ой. лифт в этом случае будет останавливаться на 3 и на 5 соответственно. То есть тебе не повезло с номером квартиры, хотя живем на одном и том же этаже)
Ответить с цитированием
  #10  
Старый 19.03.2011, 16:57
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

я лох... одна всё таки ошибка есть (((((((((((((((((( извеняюсь...
вот рабочий код:
Код:
var
nujnaya_kvartira:integer;
etajey_v_dome:integer;
nujnuy_etaj:real;
begin
etajey_v_dome:=23;
nujnaya_kvartira:=7;
nujnuy_etaj:=nujnaya_kvartira/3;
if frac(nujnuy_etaj)<>0 then
nujnuy_etaj:=nujnuy_etaj+1;
if trunc(nujnuy_etaj) mod 2<>0 then
ShowMessage('Нужно выйти на '+inttostr(trunc(nujnuy_etaj))+' этаже')
else
ShowMessage('Нужно выйти на '+inttostr(trunc(nujnuy_etaj))+' этаже');
end;
__________________
Ответить с цитированием
  #11  
Старый 19.03.2011, 17:00
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

Цитата:
Сообщение от Pilot_Red
Мля, у меня щас рак мозга будет)) после синьки голова не варит вообще
НО... допустим ты живешь в 14 кв. а я в 15-ой. лифт в этом случае будет останавливаться на 3 и на 5 соответственно. То есть тебе не повезло с номером квартиры, хотя живем на одном и том же этаже)

вот теперь правильно всё
__________________
Ответить с цитированием
  #12  
Старый 19.03.2011, 17:04
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

перемудрил с кодом))
я бы просто это nujnuy_etaj:=nujnaya_kvartira div 3; заменил на nujnuy_etaj:=round(nujnaya_kvartira / 3)
что собственно я самом начале и говорил....
Ответить с цитированием
  #13  
Старый 19.03.2011, 17:07
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

мляяяяяя.... короче у меня бошка не варит, простите, всё что я давал неправильно... в последнем вообще бред
__________________
Ответить с цитированием
  #14  
Старый 19.03.2011, 17:27
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

Прошу не бить бошка просто сегодня не о том наверно думает:
код отладил всё исправил... незнаю... обошелся без Raund'a
теперь то уж точно работает проверил через цикл от 1 до последнего этажа:

Код:
var
nujnaya_kvartira:integer;
etajey_v_dome:integer;
nujnuy_etaj:integer;
begin
etajey_v_dome:=23;
nujnaya_kvartira:=6;
nujnuy_etaj:=nujnaya_kvartira div 3;
if nujnaya_kvartira mod 3<>0 then
nujnuy_etaj:=nujnuy_etaj+1;
if nujnuy_etaj mod 2=0 then
ShowMessage('Нужно выйти на '+inttostr((nujnuy_etaj)-1)+' этаже')
else
ShowMessage('Нужно выйти на '+inttostr(nujnuy_etaj)+' этаже');
end;
__________________
Ответить с цитированием
  #15  
Старый 20.03.2011, 17:38
Row Row вне форума
Прохожий
 
Регистрация: 20.03.2011
Сообщения: 21
Репутация: 10
По умолчанию

Код:
var e,m:integer;

begin
     writeln('vvedite kvartiry');
     readln(m);
     e:=m div 3;
     if (m mod 3)<>0 then e:=e+1;
     if ((e mod 2)=0) then begin e:=e+1;
                           writeln(e); end
                      else writeln(e);
                      readln;
end.
e - номер этажа
м - номер квартиры
получается если квартира на четном этаже, например 8, тогда лифт подвезет тебя на 9 этаж))
короче поднимет выше, чтобы потом спуститься))

Последний раз редактировалось Row, 20.03.2011 в 21:11.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:24.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025