Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите дорешать задачу на Турбо Паскале!
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
Maxxy
Помогите в решении задачи!Турбо Паскаль выдает что файл не найден!Не пойму что не так!И вообще,правильно ли я составил программу!? Заранее спасибо!

Типизированные файлы.
Дан файл целых чисел. Вывести количество содержащихся в нем серий (то
есть наборов последовательно расположенных одинаковых элементов).


Program Z;
Var
F:File of integer;
X,Xs,Kol:integer;
Seria:boolean;
begin
Assign(F,'C:Ser');
{$I-}
Reset(F);
{$I+}
Read(F,Xs);
Seria:=False;
Kol:=0;
While not eof(F) do
begin
Read(F,X);
If (X=Xs) and (not Seria) then
begin
Seria:=True;
Kol:=Kol+1;
end;
If X<>Xs then
begin
Read(F,Xs);
Seria:=False;
end;
End;
Close(F);
write(Kol);
end.
pinhead
Не знаю, может мой ответ для Макси будет уже не актуален. Но т.к. ответов не было то ОТВЕЧУ! rolleyes.gif
Цитата
Турбо Паскаль выдает что файл не найден!

А выдаёт т.к. процедура Assign(F,'C:Ser'); записана с ошибкой (параметр C:Ser ). Не проверял правильно ли написана у тебя программа, но у меня имеется свой код.
Даже если он тебе уже не понадобится, но для других может быть полезен! cool.gif
Program FindSeries;

uses
  CRT;

var
  MakeSeries: word;
  FileName: string;
  F: File of integer;

procedure Error;
begin
  TextColor(Red);
  write('Ошибка!!!');
  readln;
  halt
end;

procedure EnterData;
begin
  ClrScr;
  write('Введите количество серий|->');
  readln(MakeSeries);
  write('Введите имя файла, в котором будут хранится числа|->');
  readln(FileName)
end;

function CreateTypeFile: word;
var
  ValueOfNombers, Count, i, j: word;
  NomberInSeria, TempNomberInSeria: integer;
  Dir: string;

begin
  GetDir(0, Dir);
  Dir:= Dir +'\' + FileName;
  Assign(F, Dir);
  {$I-}
  Rewrite(F);
  {$I+}
  if IOResult <> 0 then Error;
  randomize;
  Count:= 0;
  NomberInSeria:= 0;
  ValueOfNombers:= Random(10) + 2;
  TempNomberInSeria:= NomberInSeria;
  for j:= 1 to ValueOfNombers do
    begin
      NomberInSeria:= Random(100);
      if Random(2) = 0 then
        NomberInSeria:= -NomberInSeria;
      if TempNomberInSeria <> NomberInSeria then
        begin
          write(F, NomberInSeria);
          Inc(Count);
          TempNomberInSeria:= NomberInSeria
        end
    end;
  for i:= 1 to MakeSeries do
    begin
      ValueOfNombers:= Random(10) + 2;
      NomberInSeria:= Random(100);
      if Random(2) = 0 then
        NomberInSeria:= -NomberInSeria;
      for j:= 1 to ValueOfNombers do
        begin
          write(F, NomberInSeria);
          Inc(Count)
        end;
      NomberInSeria:= 0;
      ValueOfNombers:= Random(10) + 2;
      TempNomberInSeria:= NomberInSeria;
      for j:= 1 to ValueOfNombers do
        begin
          NomberInSeria:= Random(100);
          if Random(2) = 0 then
            NomberInSeria:= -NomberInSeria;
          if TempNomberInSeria <> NomberInSeria then
            begin
              write(F, NomberInSeria);
              Inc(Count);
              TempNomberInSeria:= NomberInSeria
            end
        end
    end;
  CreateTypeFile:= Count;
  Close(F)
end;

procedure ReadTypeFile;
var
  Temp, i: integer;
begin
  Reset(F);
  i:= 0;
  while not EOF(F) do
    begin
      Read(F, Temp);
      write(Temp, '  ')
    end;
  Close(F)
end;

function fFindSeries: word;
var
  Value1, Value2: integer;
  Col: word;
begin
  Reset(F);
  Col:= 0;
  Read(F, Value1);
  Seek(F, 1);
  while not EOF(F) do
    begin
      Read(F, Value2);
      if Value1 = Value2 then
        begin
          Inc(Col);
          while Value1 = Value2 do
            begin
              Value1:= Value2;
              Read(F, Value2)
            end
        end;
      Value1:= Value2
    end;
  Close(F);
  fFindSeries:= Col;
end;

begin
  EnterData;
  writeln('Количество элементов файла|-> ', CreateTypeFile);
  writeln('Количество серий|-> ', fFindSeries);
  writeln;
  writeln('Значения, хранящиеся в файле: ');
  ReadTypeFile;
  readln;
end.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.