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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 22:56   #1
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию Написать программу которая поможет определить в какой подъезд, на какой этаж, и в какую квартиру нужно идти почтальону

Мне задали написать программу по задаче:
Есть почтальон, ему известно:
1)сколько подъездов в доме;
2)сколько этажей в доме;
3)сколько квартир на одном этаже.
Написать программу которая поможет определить в какой подъезд, на какой этаж, и в какую квартиру нужно идти если нужна квартира x, предусмотреть случай если такой квартиры не существует.
Edit1-количество квартир на 1 этаже
Edit2-количество этажей в подъезде
Edit3-количество подъездов в доме
Edit4-номер квартиры которую нужно найти
P.S. мне решенный код не нужен, кто может просто объясните последовательность действий и что нужно делать.
qpuTuJlb вне форума Ответить с цитированием
Старый 24.04.2012, 23:27   #2
СтёпышЪ
Пользователь
 
Аватар для СтёпышЪ
 
Регистрация: 20.04.2012
Сообщений: 16
По умолчанию

находим количество квартир в подъезде(KOL)
затем через деление нацело (N div KOL)+1 найдем номер подъезда(+1 потому что если номер квартиры допустим 5 а в подъезде 10 квартир тогда при делении на цело получим 0 а должно быть 1 т.е. перый подъезд)
подъезд нашли...
что бы узнать на какой этаж ему идти нужно ((N mod KOL) div K)+1

N-номер квартиры
KOL-количество квартир в подъезде
K-количество квартир на этаже



как то так если есть вопросы спрашивай )
СтёпышЪ вне форума Ответить с цитированием
Старый 25.04.2012, 15:44   #3
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию

проблема с домом на этаже, вот я ввёл например кол. квартир 4, этажей 5, подъездов 5 и например хочу найти квартиру 1, то оно показывает не 1 по щёту квартиру а 2, т.к. ((N mod KOL) div K)+1. Как сделать условие чтобы оно на 1 этаж не шло?
qpuTuJlb вне форума Ответить с цитированием
Старый 25.04.2012, 16:07   #4
СтёпышЪ
Пользователь
 
Аватар для СтёпышЪ
 
Регистрация: 20.04.2012
Сообщений: 16
По умолчанию

не понял слегка ошибки...
но если подставить значения то должно показывать 1 подъезд 1 этаж...

Цитата:
Как сделать условие чтобы оно на 1 этаж не шло?
всмысле не шло на первый этаж?

можешь показать код который ты написал?
СтёпышЪ вне форума Ответить с цитированием
Старый 25.04.2012, 17:18   #5
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию

на 1 этаж шло, но когда мне нада узнать какая квартира по щёту тоесть если мне нужна квартира на первом этаже, например 2 то программа показывает что это 3 квартира по щёту а не 2
Код:
var
p,kol,k,n:integer;
begin
k:=strtoint(Edit1.Text);
kol:=strtoint(Edit2.Text);
p:=strtoint(Edit3.Text);
n:=strtoint(Edit4.Text);
k:=(n div kol)+1;
kol:=((n mod kol)div k)+1;
Showmessage(inttostr(k)+(' этаж, ')+(inttostr(kol)+(' квартира, ')));
end;
qpuTuJlb вне форума Ответить с цитированием
Старый 25.04.2012, 18:13   #6
СтёпышЪ
Пользователь
 
Аватар для СтёпышЪ
 
Регистрация: 20.04.2012
Сообщений: 16
По умолчанию

N mod K
будет говорить какая по счету на лестничной площадке)

Код:
var
p,h,kol,k,n,Nh:integer;
begin
k:=strtoint(Edit1.Text);
h:=strtoint(Edit2.Text);
p:=strtoint(Edit3.Text);
n:=strtoint(Edit4.Text);
kol:=k*h  { под kol я имел ввиду сколько всего квартир в подъезде, т.е. если 5 этажей по 4 квартиры то kol=20}
k:=(n div kol)+1;
Nh:=((n mod kol)div k)+1;
p:=n mod k;
Showmessage(inttostr(k)+(' Подъезд, ')+(inttostr(Nh)+(' этаж, ')+(inttostr(p)+(' квартира, ')));
end;
вот так должно работать)
СтёпышЪ вне форума Ответить с цитированием
Старый 25.04.2012, 19:46   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

СтёпышЪ, опять что-то не то
Ввожу 3 квартиры на этаже, 10 этажей, 10 подъездов. Программа "говорит", что 3 квартира в 1 подъезде на 4 этаже и имеет номер 0 на этаже.

Вот такой топорненький вариант:
Код:
var
k,h,p,n,p1,h1,k1:integer;
begin
k:=strtoint(Edit1.Text);
h:=strtoint(Edit2.Text);
p:=strtoint(Edit3.Text);
n:=strtoint(Edit4.Text);
p1:=n div (k*h);
if n mod (k*h)<>0 then
  inc(p1);
n:=n-(p1-1)*k*h;
h1:=n div k;
if n mod k<>0 then
  inc(h1);
k1:=n-(h1-1)*k;
Showmessage(inttostr(p1)+' Подъезд, '+inttostr(h1)+' этаж, '+inttostr(k1)+' квартира');
end;
Вариант чуть получше:
Код:
var
  k, h, p, n, p1, h1, k1: integer;
begin
  k := strtoint(Edit1.Text);
  h := strtoint(Edit2.Text);
  p := strtoint(Edit3.Text);
  n := strtoint(Edit4.Text);
  p1 := n div (k * h) + 1 mod (1 + n mod (k * h));
  n := n - (p1 - 1) * k * h;
  h1 := n div k + 1 mod (1 + n mod k);
  k1 := n - (h1 - 1) * k;
  Showmessage(inttostr(p1) + ' Подъезд, ' + inttostr(h1) + ' этаж, ' + inttostr(k1) + ' квартира');
end;
Перед showmessage достаточно проверять, что p1<=p, чтобы этот подъезд существовал, и n>0, чтобы существовала эта квартира.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 25.04.2012 в 20:07.
BDA на форуме Ответить с цитированием
Старый 25.04.2012, 22:29   #8
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию

спасибо вам обоим, BDA отзыв добавить немогу( пишет уже оставлял тебе
qpuTuJlb вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно написать программу на C#, которая удаляет из текста все слова igrik Помощь студентам 2 16.07.2013 18:13
Дано натуральное число n и действительные числа а1, а2, а3, ..., an (а1≠0) нужно определить какой член находится ранее. Hom94ok Паскаль, Turbo Pascal, PascalABC.NET 0 12.03.2012 17:52
Нужно написать програмку, но даже какой язык брать непонятно dimastyi073 Помощь студентам 2 06.03.2012 14:37
если я хочу чтобы переменная была рандом, нужно просто написать, что типа а:=random? какой это будет тип переменных? gylayko Помощь студентам 6 04.10.2011 12:58
Какой нужно написать код,чтобы свернуть форму Bigtyoma Общие вопросы Delphi 2 08.09.2008 23:22