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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2011, 12:43   #1
Slap
Пользователь
 
Регистрация: 03.09.2010
Сообщений: 25
Сообщение Free Pascal. Программа создает файл, но не записывает в него нужную переменную.

Вот код программы.
Код:
const
digits=['0'..'9'];
type
time=record
h,m,s:byte;
end;
var
t,w:array[1..200] of time;
n:byte;
y:time;
i:longint;
j,min,r,x:integer;
p:boolean;
k:array[1..86400,1..200] of integer;
f1,f2:text;
procedure init;
begin
  Assign (f1,'input01.txt' );
  Reset (f1);
  Assign (f2, 'f.out.txt' );
  Rewrite (f2);
end;
function readnum:byte;
var
res:byte;
c:char;
begin
read(f1,c);
res:=0;
while (c in digits) do
begin
 res:=res*10+(ord(c)-ord('0'));
 read(f1,c);
end;
readnum:=res;
END;
function check(d,f:time):boolean;
begin
  if (d.h=f.h) and (d.m=f.m) and (d.s=f.s) then
  check:=true
  else
   check:=false;
end;
procedure addy;
begin
inc(y.s);
with y do
if s=60 then
begin
 s:=0;
 inc(m);
 if m=60 then
 begin
  m:=0;
  inc(h);
 end;
end;
end;
begin
 init;
 readln(f1,n);
 for i:=1 to n do
 begin
  t[i].h:=readnum;
  t[i].m:=readnum;
  t[i].s:=readnum;
  readln(f1);
 end;
 for i:=1 to n do
   w[i]:=t[i];
i:=1;
repeat
 if check(t[i],t[1]) then
 p:=true
 else
 begin
  p:=false;
  break;
 end;
inc(i);
until i>n;
if p=true then
write(f2,'0')
 else
 begin
 y.h:=0;
 y.m:=0;
 y.s:=0;
 i:=0;
repeat
 begin
 inc(i);
 k[i,j]:=0;   {i-секунды (1-86400)}
   for j:=1 to n do
    begin
    if check(w[j],y) then
    break
    else
    begin
    k[i,j]:=4;
     if w[j].s>=y.s then
     begin
     r:=w[j].s-y.s;
     inc(k[i,j], r);
     end
     else
     begin
      r:=w[j].s-y.s + 60;
      inc(k[i,j],r);
      inc(w[j].m);
     end;
     if w[j].m>=y.m then
     begin
     r:=w[j].m-y.m;
     inc(k[i,j], r);
     end
     else
     begin
      r:=w[j].m-y.m + 60;
      inc(k[i,j],r);
      inc(w[j].h);
     end;
     if w[j].h>=y.h then
     begin
     r:=w[j].h-y.h;
     inc(k[i,j], r);
     end
     else
      begin
      r:=w[j].h-y.h+24;
      inc(k[i,j],r);
      end;
     w[j]:=t[j];
    end;
    end;
   addy;
   end
   until y.h=24;
    min:=k[1,1];
    for i:=1 to 86400 do
    for j:=1 to n do
     if k[i,j]<min then
     begin
      x:=k[i,j];
      k[i,j]:=min;
      min:=x;
     end;
    write(f2,min);
 end;
 close(f1);
 close(f2);
 end.
Компиляция проходит успешно, выполнение программы тоже, а запись в файл не происходит. Почему? Подскажите, пожалуйста
P.S Жирным шрифтом выделил тот цикл, из-за которого, по-моему, программа не находит результат. Может кто-нибудь знает, как можно переделать этот цикл, чтобы она хоть какой-то результат в файл записывала? А там я сам постараюсь исправить, чтобы она правильно решала задачу.

Последний раз редактировалось Slap; 24.06.2011 в 11:33.
Slap вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не записывает текст в файл .( gefest58 Общие вопросы Delphi 1 24.04.2011 19:56
Копировать в нужную переменную при отсутсвиии нужной позиции Shouldercannon Общие вопросы Delphi 1 20.10.2010 19:17
FileCreate() создает файл и не допускает к нему... Дворник Общие вопросы Delphi 12 20.08.2010 16:12
Не записывает в переменную beemoto Общие вопросы Delphi 22 30.10.2009 11:25
программа создает блоксхемы powerlifting Фриланс 3 13.07.2009 11:28