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

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

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

> запутался в задачах чютчють одна норм а другая с ошибкой одной
maksimla
сообщение 17.12.2008 15:49
Сообщение #1


Знаток
****

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

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


я сечас прохожу все что связано с двоичным массивом.
7 задачка две дороги и стоят 4 светофора по два на каждой дороги.
для пешеходов загорается зеленый свет в то самое время как на кнопку нажал и горит 30 секунд. Данные записываются в центре когда именно нажал пешеход на кнопку.
напишите а) идею решения
б) программу сколько секунд за сутки горит зеленый свет на всех светофорах.
Первичные данные записаны в файле duom.txt. На первой строчке записано натуральное число n (1 ≤ n ≤ 1000) . В последующих n строчках записано такие данные D или K D - правая K - левая сторона пути, потом записаны 3 неотрицательные числа val - часы, min - минуту и sek - секунды, показывающие когда нажал пешеход на кнопку, (0 ≤ val ≤ 23, 0 ≤ min ≤ 59, 0 ≤ sek ≤ 59).
Результат записывается в секундах в файл rez.txt.
пример
первичные данные
8
K 21 1 59
D 7 8 0
K 13 55 13
D 13 54 59
D 21 2 29
K 7 8 0
D 7 7 50
K 13 55 30
результат
44
обьяснение
7 8 0 загорелся свет в обоих частях и горел 30 секунд
D 13 54 59 в правой загорелся
K 13 55 13 в левой загорелся и горел в месте 14 секунд. Общее горения 44 секунды.

непонял почему они еще непощетали это
K 7 8 0
D 7 7 50
и так получается тут горел 20 секунд да и плюс те 44 выходит результат 64.
вот сделал програмку очень понятную и сразу понятно где ошибка есть вот она
program sviesoforas;
var n,i,j: integer;
a:array [1..1001] of char;
val,min,sek: array [1..1001] of integer;
b,c,d:integer;
pradDuom,
rezult: text;
begin
d:=0;
assign (pradDuom, 'duom.TXT');
assign (rezult, 'rez.TXT');
reset (pradDuom);
rewrite (rezult);
readln (pradDuom, n);
writeln(n);
for i := 1 to n do
begin
readln(pradDuom, a[i],val[i],min[i],sek[i]);
writeln(a[i],' ',val[i],' ',min[i],' ',sek[i]);
end;
for i := 1 to n do
for j :=1+i to n do
if a[i]<>a[j] then
if (val[i]=val[j]) and (min[i]=min[j]) and (sek[i]=sek[j])
then begin d:=d+30;
writeln(' a ',val[i],' ',min[i],' ',sek[i],' = ',val[j],' ',min[j],' ',sek[j],' ravno sekund ',d)
end
else
if (val[i]=val[j]) and (min[i]=min[j]) and (sek[i]<sek[j])
then begin d:=d+((sek[i]+30)-sek[j]);
writeln(' b ',val[i],' ',min[i],' ',sek[i],' = ',val[j],' ',min[j],' ',sek[j],' ravno sekund ',d)
end
else if (val[i] = val[j]) and (min[i]-min[j]=1) and (sek[j]>sek[i])
then
begin sek[j]:=sek[j]+30;
if sek[j]>60
then sek[j]:=sek[j]-60; min[j]:=min[j]+1;
if (min[i]-min[j]=0) and (sek[j]>sek[i])
then d:=d+((sek[i]+30)-sek[j]); sek[j]:=sek[j]+30; min[j]:=min[j]-1;
writeln(' c ',val[i],' ',min[i],' ',sek[i],' = ',val[j],' ',min[j],' ',sek[j],' ravno sekund ',d);
end;



writeln(d);
readln;
end.

вот еще другую сделал тожесамая ошибка
program sviesoforas;
var n,i,j: integer;
a:array [1..1001] of char;
val,min,sek: array [1..1001] of integer;
b,c,d:integer;
pradDuom,
rezult: text;
begin
d:=0;
assign (pradDuom, 'duom.TXT');
assign (rezult, 'rez.TXT');
reset (pradDuom);
rewrite (rezult);
readln (pradDuom, n);
writeln(n);
for i := 1 to n do
begin
readln(pradDuom, a[i],val[i],min[i],sek[i]);
writeln(a[i],' ',val[i],' ',min[i],' ',sek[i]);
end;
for i := 1 to n do
for j :=1+i to n do
if a[i]<>a[j] then
if (val[i]=val[j]) and (min[i]=min[j]) and (sek[i]=sek[j])
then d:=d+30
else
if (val[i]=val[j]) and (min[i]=min[j]) and (sek[i]<sek[j])
then d:=d+((sek[i]+30)-sek[j])
else
if (val[i]=val[j]) and (min[i]=min[j]) and (sek[i]>sek[j])
then d:=d+(sek[i]-(sek[j]+30))
else
if (val[i]=val[j])
then
begin
if (min[i]-min[j]=1)
then
begin
min[i]:=min[i]-1; sek[i]:=sek[i]+60;
if (min[i]-min[j]=0)
then
if (sek[i]-sek[j]>0) then d:=d+(sek[i]-sek[j]); writeln(d);
writeln(' then ',val[i],' ',min[i],' ',sek[i],' = ',val[j],' ',min[j],' ',sek[j])
end
else
begin
min[j]:=min[j]-1; sek[j]:=sek[j]+60;
if (min[j]-min[i]=0)
then
if (sek[j]>sek[i])
then
if (sek[j]-sek[i]<30)
then d:=d+(sek[i]-(sek[j]+30));
end;
end;
writeln(d);
readln;
end.


посоветуйте как лутше сделать или исправьте эти программки.

8 задача Дан список владельцев автомобилей и их номера автомобилей. Надо по номеру автомобиля найти этого человека которому автомобиль принадлежит.
в файле duom.txt. написано на первой строке номер автомобиля которого найти нада на второй строке написан сколько в списке фамилий. фамилия может содержать до 20 символов номер 3 буквы латинские и 3 цифры от 1 до 999.
вот предоставили данные
const SK = 1000;
type savin = record
pavarde: string[20];
num_raid: string[3];
num_sk: 1..999
end;
sarasas = array [1..SK] of savin;

и все номера автомобилей будут по порядку идти
AAA001
AAA002
AAA005
AAA006
...
AAA999
AAB002
...
и еще списак можетбыть от 1 до 1000 людей
данные записать в файл rez.txt.
пример
KVL578
6
Petraitis ABC321
Petkeviciene BJU500
Jonaitis DKG512
Antanaitis KVL578
Zemaityte KVL644
Bartkus VVV255

результат фамилия владельца автомобиля Antanaitis
вот я зделал простую программу эту все правильно выводит
вот
program automobilis;
const SK = 1000;
type savin = record
pavarde: string[20];
num_raid: string[3];
num_sk: 1..999
end;
sarasas = array [1..SK] of savin;
var
a:string[3];
n,i,s:integer;
c:sarasas;
p:text;
begin
assign (p, 'duom.TXT');
reset (p);
readln (p, a,n);
writeln(a,' ',n);
readln(p, s);
writeln(s);
for i:=1 to s do
begin
readln(p,c[i].pavarde,c[i].num_raid,c[i].num_sk);
writeln(c[i].pavarde,' ',c[i].num_raid,' ',c[i].num_sk);
end;
writeln;
for i:=1 to s do
if (c[i].num_raid=a) and (c[i].num_sk=n) then writeln( c[i].pavarde);
readln;
end.


потом я эту программу перепишу в двоичный поиск сделаю.

непонятно мне следущее
Вместе с 7 и 8 заданиями вместе должно быть выложена программа генерирующая случайное условия соответствующую первичным набором данных (случайный тест) в котором должен быть хоть один искомый обьект.
вот все ого как это так может обесните.
и еще эти задания должны быть записаны в файлы lapsi107.pas и lapsi108.pas генерирующие программы должны быть записаны в файлы apsi107gen.pas и lapsi108gen.pas .
во как даже может мне обьясните что за генераторы и как их сделать .


Добавлено через 2 мин.
ого сколько много написал я. если что нибуть непонятно то спросите уж извините за перевод с литовского на русский

Сообщение отредактировано: Lapp - 18.12.2008 8:27


Эскизы прикрепленных изображений
Прикрепленное изображение

--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
maksimla
сообщение 21.12.2008 12:04
Сообщение #2


Знаток
****

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

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


а от куда взял число 86400?


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
maksimla   запутался в задачах чютчють одна норм а другая с ошибкой одной   17.12.2008 15:49
Lapp   вот сделал програмку очень понятную Вот ЭТО ты наз...   18.12.2008 8:22
maksimla   извините но серовно тут неправильно результат выво...   18.12.2008 12:06
maksimla   вот свой код исправил я как мне приснилось ночью )...   18.12.2008 12:34
maksimla   все я больше запутался и уже немогу решать голова ...   20.12.2008 11:07
maksimla   K 13 55 13 D 13 54 59 непонел вот услал уже и ту...   20.12.2008 11:31
Lapp   запутался нечего непойму ужеКонечно, запутаешься т...   20.12.2008 12:13
maksimla   так я примерно понел это что написали program svi...   20.12.2008 12:46
Lapp   {а вот тут не выполняется после else чегото почем...   20.12.2008 12:57
maksimla   потомучто написал это и не видел букв я вот и поэт...   20.12.2008 13:11
Айра   Lapp, по-моему, ты убрал из его кода слишком мног...   20.12.2008 13:32
Lapp   ты убрал из его кода слишком много лишнего) Хм.. ...   20.12.2008 13:39
maksimla   вот кажется сделал я до конца можете проверить оче...   20.12.2008 19:58
Айра   0. думаю, при вычислении d нужно проверять, чтоб о...   21.12.2008 0:27
volvo   Можно кое-что уточнить? Почему 14 секунд? Левый с...   21.12.2008 4:42
maksimla   спасибо но может мне обьясните эту задачку как вы ...   21.12.2008 11:37
maksimla   а от куда взял число 86400?   21.12.2008 12:04
volvo   А какая разница? Хоть пять разделов Var сделай, от...   21.12.2008 12:07
maksimla   непонятно мне следущее Вместе с 7 и 8 заданиями вм...   21.12.2008 13:42
volvo   Имеется в виду, когда программа запущена - это в п...   21.12.2008 14:26
maksimla   зачем и что это дает value[1] := random(500); ка...   21.12.2008 17:12
maksimla   можете подсказать как сделать random буквы английс...   21.12.2008 18:48


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

 



- Текстовая версия 4.07.2025 20:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"