IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> циклы, задача на циклы
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


В учебном заведении известно начало рабочего дня, продолжительность пары или урока в минутах, продолжительность обычного и большого перерывов и их место в расписании, а также количество пар (уроков) в день. Напишите программу, которая составляет расписание звонков на весь учебный день.
даже не знаю с какой стороны подойти... можно ли сделать это с помощью массива? буду благодарен совету
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
можно ли сделать это с помощью массива?

Можно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


Цитата(Ozzя @ 4.05.2010 10:11) *

Можно

for i:=1 to 24 do
for j:=1 to 60 do

а дальше не знаю как быть
была мысль заполнить этот массив нулями и потом изменять элементы в соответствии с номерами строк и столбцов...

Сообщение отредактировано: marwell -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


А почему так много то?
6 учебных дней, по 6-8 уроков (ну пусть 10)

NumberOfDay:= 6;
NumberOfLessons:=10;
For i:=1 to NumberOfDay do
For i:=1 to NumberOfLessons do
...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


Цитата(Ozzя @ 4.05.2010 11:58) *

А почему так много то?
6 учебных дней, по 6-8 уроков (ну пусть 10)

NumberOfDay:= 6;
NumberOfLessons:=10;
For i:=1 to NumberOfDay do
For i:=1 to NumberOfLessons do
...


т.е. расписание на всю неделю?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Ну, да чего мелочиться-то. Сразу и расписание уроков вбить.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


Цитата(Ozzя @ 4.05.2010 12:09) *

Ну, да чего мелочиться-то. Сразу и расписание уроков вбить.

вот сам алгоритм вычисления времени звонков я и не могу понять
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Дзынь Начало раб. дня
Пока не конец раб. дня
Начало раб. дня+длина урока*номер урока
Дзынь
Начало раб. дня+длина урока*номер урока+длина перемены // здесь дополнительно проверку большая или маленькая перемена
Дзынь
конец

Примерно так
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


Цитата(Ozzя @ 4.05.2010 12:21) *

Дзынь Начало раб. дня
Пока не конец раб. дня
Начало раб. дня+длина урока*номер урока
Дзынь
Начало раб. дня+длина урока*номер урока+длина перемены // здесь дополнительно проверку большая или маленькая перемена
Дзынь
конец

Примерно так

а как учесть то что что в часе 60 минут? (например, начало в 8:00, 5 пар, по 90 минут, перерыв 10 минут, большой 40минут после 2 пары - 8:00, 9:20, и т.д. ) может я просто не слышал такого, но я не могу понять как сделать чтобы при превышении количества минут 60, увеличивалось количество часов blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Отдельно - часы, отдельно - минуты...

hh := 8; mm := 0; // 8:00

mm := mm + 90; // добавляем 90 минут - конец первой пары, так?
// А теперь - корректируем время, чтоб было в правильном формате, а не 8:90
hh := hh + (mm div 60);
mm := mm mod 60;
// и (чудо, правда?) у нас получается hh = 9, а mm = 30
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


var nach,i:integer;
hh,mm,hh2,mm2:integer;
bol_per,per:integer;
prodol:integer;
kol,mesto:Integer;
begin
write('vvedite vremja nachala dnja v formate "hh mm" - ');
readln(hh, mm);
write('vvedite prodolgitelnost pari v minutah - ');
readln(prodol);
write('vvedite prodolg. bolschogo pereriva - ');
readln(bol_per);
write('vvedite prodolg. obichnogo pereriva - ');
readln(per);
write('vvedite nomer pari pered bolschim pererivom - ');
readln(mesto);
write('vvedite kolichestvo par v den - ');
readln(kol);
writeln(hh,':',mm);
for i:=1 to kol do
begin
mm:=mm+prodol;
hh:=hh+(mm div 60);
mm:=mm mod 60;
if i=mesto then begin
mm2:=mm+bol_per;
hh2:=hh+(mm2 div 60);
mm2:=mm2 mod 60;
end
else begin
mm2:=mm+per;
hh2:=hh+(mm2 div 60);
mm2:=mm2 mod 60;
end;
writeln(hh,':',mm);
Writeln(hh2,':',mm2);
end;
readln;
end.

не могу найти ошибку(( не хватает 10 мин перерыва
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


mm:=mm+prodol;

Здесь ты забываешь перемену прибавить

Наврал sad.gif

Тут добавь
  ...
mm:=mm2; // вся соль (С) тут ;)
writeln(hh,':',mm);
Writeln(hh2,':',mm2);
end;


Сообщение отредактировано: Ozzя -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


Цитата(Ozzя @ 4.05.2010 15:16) *

mm:=mm+prodol;

Здесь ты забываешь перемену прибавить

Наврал sad.gif

Тут добавь
  ...
mm:=mm2; // вся соль (С) тут ;)
writeln(hh,':',mm);
Writeln(hh2,':',mm2);
end;


но ведь тогда выведет по два одинаковых времени... может еще что-то надо изменить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


С чего это вдруг?
См. сам

Сообщение отредактировано: Ozzя -


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


Цитата(Ozzя @ 4.05.2010 15:40) *

С чего это вдруг?
См. сам

var nach,i:integer;
hh,mm,hh2,mm2:integer;
bol_per,per:integer;
prodol:integer;
kol,mesto:Integer;
begin
write('vvedite vremja nachala dnja v formate "hh mm" - ');
readln(hh, mm);
write('vvedite prodolgitelnost pari v minutah - ');
readln(prodol);
write('vvedite prodolg. bolschogo pereriva - ');
readln(bol_per);
write('vvedite prodolg. obichnogo pereriva - ');
readln(per);
write('vvedite nomer pari pered bolschim pererivom - ');
readln(mesto);
write('vvedite kolichestvo par v den - ');
readln(kol);
writeln (hh,':',mm);
for i:=1 to kol do
begin
mm:=mm+prodol;
hh:=hh+(mm div 60);
mm:=mm mod 60;
if i=mesto then begin
mm2:=mm+bol_per;
hh2:=hh+(mm2 div 60);
mm2:=mm2 mod 60;
end
else begin
mm2:=mm+per;
hh2:=hh+(mm2 div 60);
mm2:=mm2 mod 60;
end;
mm:=mm2;
writeln(hh,':',mm);
Writeln(hh2,':',mm2);
end;
readln;
end.

я тебя правильно понял?Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Кажется, я еще что-то правил.
Мой вариант:
var nach,i:integer;
hh,mm,hh2,mm2:integer;
bol_per,per:integer;
prodol:integer;
kol,mesto:Integer;
begin
write('vvedite vremja nachala dnja v formate "hh mm" - ');
readln(hh, mm);
write('vvedite prodolgitelnost pari v minutah - ');
readln(prodol);
write('vvedite prodolg. bolschogo pereriva - ');
readln(bol_per);
write('vvedite prodolg. obichnogo pereriva - ');
readln(per);
write('vvedite nomer pari pered bolschim pererivom - ');
readln(mesto);
write('vvedite kolichestvo par v den - ');
readln(kol);
writeln(hh,':',mm);
for i:=1 to kol do
begin
mm:=mm+prodol;
hh:=hh+(mm div 60);
mm:=mm mod 60;
if i=mesto then
begin
mm2:=mm+bol_per;
hh2:=hh+(mm2 div 60);
mm2:=mm2 mod 60;
end
else
begin
mm2:=mm+per;
hh2:=hh+(mm2 div 60);
mm2:=mm2 mod 60;
end;
writeln(hh,':',mm);
Writeln(hh2,':',mm2);
mm:=mm2;
end;
readln;
end.


Добавлено через 5 мин.
Понял, где наврал
Не так
mm:=mm2; // вся соль (С) тут ;)
writeln(hh,':',mm);
Writeln(hh2,':',mm2);
end;

а так

  writeln(hh,':',mm);
Writeln(hh2,':',mm2);
mm:=mm2; // вся соль (С) тут ;)

end;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


понятно, спасибо большое! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
понятно, спасибо большое!

Не, ты молодец. В отличие от многих других. По моему, довольно-таки невнятному алгоритму написал программу. А Volvo и я только помогли
Лови +

Сообщение отредактировано: Ozzя -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Бывалый
***

Группа: Пользователи
Сообщений: 198
Пол: Мужской

Репутация: -  1  +


еще один вопрос: в результате программа выводит время звонков, включая также время начала следующей пары(напрмер: пар 5, выводит время звонков для 5 пар и в конце время начала шестой пары), как можно убрать это последнее время?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гость






Я что-то не так делаю, либо программа из 16-го поста работает некорректно (комментарии - мои)?

vvedite vremja nachala dnja v formate "hh mm" - 8 0
vvedite prodolgitelnost pari v minutah - 90
vvedite prodolg. bolschogo pereriva - 40
vvedite prodolg. obichnogo pereriva - 10
vvedite nomer pari pered bolschim pererivom - 3
vvedite kolichestvo par v den - 5
8:0 // Начало первой пары
9:30 // Конец первой пары
9:40 // Начало второй пары
11:10 // Конец второй пары
11:20 // Начало третьей пары
12:50 // Конец третьей пары
13:30 // Закончился большой перерыв, началась 4-я пара
14:0 // <--- Вот это что ???
14:10
15:40
15:50

 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.12.2020 5:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name