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

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

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

 
 Ответить  Открыть новую тему 
> Error 100 в программе с файлами
сообщение
Сообщение #1


Профи
****

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

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


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

что я не делала, у меня после ввода значений появляется ошибка 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.



ума не приложу, что не так.... объясните пожалуйста!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


помогите разобраться, вообще не знаю как это исправить! но очень нужно к завтрашнему утру!!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


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


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


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

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

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;

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

Сообщение отредактировано: Bokul -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

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

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


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


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 значений у (причем громадных)

??????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

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

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


помогите, никак не справлюсь с этой задачкой! ну откуда там в выходном файле взяться 15 значениям???????????????????????????????????????77 wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Тот же тип ошибки 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


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 30.10.2020 5:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name