Помогите дорешать задачу на Турбо Паскале!

  • Автор темы Maxxy
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

Maxxy

#1
Помогите в решении задачи!Турбо Паскаль выдает что файл не найден!Не пойму что не так!И вообще,правильно ли я составил программу!? Заранее спасибо!

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


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.
 
P

pinhead

#2
Не знаю, может мой ответ для Макси будет уже не актуален. Но т.к. ответов не было то ОТВЕЧУ! :(
Турбо Паскаль выдает что файл не найден!
А выдаёт т.к. процедура Assign(F,'C:Ser'); записана с ошибкой (параметр C:Ser ). Не проверял правильно ли написана у тебя программа, но у меня имеется свой код.
Даже если он тебе уже не понадобится, но для других может быть полезен! :p
Код:
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.
 
Статус
Закрыто для дальнейших ответов.