Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Error 100 в программе с файлами

Автор: 18192123 11.12.2006 0:57

мне нужно было написать программу, которая читает из типизированного файла целых чисел каждое число, вычисляет по нему тангенс и записывает полученное значение в другой типизированный файл

что я не делала, у меня после ввода значений появляется ошибка error 100

вот код


uses crt;
const
n = 5;
procedure save_file ( Filename : string );
var
f : file of integer;
x : integer;
i : byte;
begin
assign (f, filename);
rewrite (f);
for i := 1 to n do
begin
read (x);
write (f, x);
end;
close (f);
end;
procedure print_file( filename : string );
var
f : file of integer;
i : byte;
x : integer;
begin
assign (f, filename);
reset (f);
while not eof (f) do
begin
read (f, x);
writeln (x:4);
end;
close (f);
end;
procedure basis_part( fnin, fnout : string );
var
fin, fout : file of real;
x : real;
i : byte;
y : real;
begin
assign (fin, fnin);
assign (fout, fnout); reset ( fin);
rewrite (fout);
while not eof(fin) do
begin
read (fin, x );
y := sin (x) / cos (x);
write ( fout, y );

end;
close (fin);
close (fout);
end;

BEGIN
clrscr;
save_file ( 'file2.bin' );
print_file ( 'file2.bin' );
basis_part ('file2.bin', 'file2_out.bin');
writeln ( '========================');
print_file ('file2_out.bin');
readkey;
end.



ума не приложу, что не так.... объясните пожалуйста!!!!

Автор: 18192123 11.12.2006 3:13

помогите разобраться, вообще не знаю как это исправить! но очень нужно к завтрашнему утру!!!!!

Автор: Bokul 11.12.2006 3:38

Поставь повсюду file of real. smile.gif
Нельзя сначала создавать file of integer, а потом его читать как file of real.

Автор: Bokul 11.12.2006 3:59

Цитата
которая читает из типизированного файла целых чисел каждое число

Не увидел...
Сделай такие изменения:

procedure basis_part( fnin, fnout : string );
var fout : file of real;
fin: file of integer;{<---------}
x : integer;{<---------}
i : byte;
y : real;
begin
assign (fin, fnin);
assign (fout, fnout); reset ( fin);
rewrite (fout);
while not eof(fin) do
begin
read (fin, x );
y := sin (x) / cos (x);
write ( fout, y );

end;
close (fin);
close (fout);
end;

Не проверял, но ты должна понять принцип...

Автор: 18192123 12.12.2006 1:48

вот окончательная версия:


program zach_9_5;
uses crt;
const
n = 5;
procedure save_file ( Filename : string );
var
f : file of integer;
x : integer;
i : byte;
begin
assign (f, filename);
rewrite (f);
for i := 1 to n do
begin
read (x);
write (f, x);
end;
close (f);
end;
procedure print_file( filename : string );
var
f : file of integer;
x : integer;
begin
assign (f, filename);
reset (f);
while not eof (f) do
begin
read (f, x);
writeln (x:4);
end;
close (f);
end;
procedure basis_part( fnin, fnout : string );
var
fin : file of integer; fout : file of real;
x : integer;
y : real;
begin
assign (fin, fnin);
assign (fout, fnout); reset ( fin);
rewrite (fout);
while not eof(fin) do
begin
read (fin, x );
y := sin (x) / cos (x);
write ( fout, y );

end;
close (fin);
close (fout);
end;

BEGIN
clrscr;
save_file ( 'file2.bin' );
print_file ( 'file2.bin' );
basis_part ('file2.bin', 'file2_out.bin');
writeln ( '========================');
print_file ('file2_out.bin');
readkey;
end.



ввожу 5 значений х , а получаю 15 значений у (причем громадных)

??????

Автор: 18192123 12.12.2006 3:01

помогите, никак не справлюсь с этой задачкой! ну откуда там в выходном файле взяться 15 значениям???????????????????????????????????????77 wacko.gif

Автор: Bokul 12.12.2006 4:29

Тот же тип ошибки wink.gif , а именно

save_file ( 'file2.bin' );save_file ( 'file2.bin' );
print_file ( 'file2.bin' );
basis_part ('file2.bin', 'file2_out.bin');
writeln ( '========================');
print_file ('file2_out.bin');{<--здесь}


У тебя print_file работает только с integer, а ты ему стравливаешь файл, информация в который, записана как real. Конечно же возникнут казусы. smile.gif
Выход: сделай отдельную процедуру для вывода инфы с file of real. smile.gif