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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2010, 23:52   #1
alzm
Новичок
Джуниор
 
Регистрация: 23.03.2010
Сообщений: 2
По умолчанию Не могу исправить ошибку.(Турбо Паскаль)

Вспомогательная часть работает,а основная выдает ошибку 63. Не знаю как ее исправить. Пожалуйста помогите. Заранее спасибо

Program vspom;
Type name = record
FIO : string [20];
KD : BYTE;
SZ : REAL;
END.
VAR F : file of name ; a : name; i,n : byte;
Begin
Writeln (‘vvedy kol-vo dannuh’);
Readln (n);
Assign (f, c:\d.dat); rewrite(f);
For I : 1 to n do begin
Write (‘vv FIO’); readln (a. FIO);
Write (‘vv KD’); readln (a. KD);
Write (‘vv SZ’); readln (a. SZ);
Writeln (f.a); end;
Close (f);
End.



Program osnov;
Type name = record
FIO : string [20];
KD : BYTE;
SZ : REAL;
End;
VAR F : file of name ; a : name; i,n : byte; s : real; k : integer;
Begin
Assign (f, 'c:\d.dat');
Resset (f);
S : = 0; k : = 0;
While not (eof(f)) do begin
Readln (f,a); [[[вот здесь выдает ошибку 63 invalid file type]]]
K : = k=1;
s : = s+ a.SZ; end;
s : = s/k;
close (f);
reset (f);
While not (eof(f)) do begin
Readln (f,a);
If a.SZ < s then writeln (a.FIO); end;
Close(f);
End.

Последний раз редактировалось alzm; 24.03.2010 в 00:01.
alzm вне форума Ответить с цитированием
Старый 24.03.2010, 00:02   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Всюду Read (f,a); а не readln

ДОБАВЛЕНО
И write (f,a); а не writeln

Последний раз редактировалось eoln; 24.03.2010 в 00:05.
eoln вне форума Ответить с цитированием
Старый 24.03.2010, 00:14   #3
alzm
Новичок
Джуниор
 
Регистрация: 23.03.2010
Сообщений: 2
По умолчанию

А теперь пишет ошибка 200 division by zero



Program osnov;
Type name = record
FIO : string [20];
KD : BYTE;
SZ : REAL;
End;
VAR F : file of name ; a : name; i,n : byte; s : real; k : integer;
Begin
Assign (f, 'c:\d.dat');
Resset (f);
S : = 0; k : = 0;
While not (eof(f)) do begin
Read(f,a);
K := k+1;
s := s+a.SZ; end;
s := s/k; [[[[[[[[[[[[вот здесь]]]]]]]]]]]]
close (f);
reset (f);
While not (eof(f)) do begin
Read(f,a);
If a.SZ < s then write(a.FIO); end;
Close(f);
End.

Последний раз редактировалось alzm; 24.03.2010 в 00:26.
alzm вне форума Ответить с цитированием
Старый 24.03.2010, 00:34   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Цитата:
Resset (f);
Точно не reset?
Цитата:
S : = 0; k : = 0;
While not (eof(f)) do begin
Read(f,a);
K := k+1;
s := s+a.SZ; end;

s := s/k; [[[[[[[[[[[[вот здесь]]]]]]]]]]]]
Переменная k = 0, видимо в файле 'c:\d.dat' ничего нет.
eoln вне форума Ответить с цитированием
Старый 25.03.2010, 14:44   #5
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Цитата:
Переменная k = 0, видимо в файле 'c:\d.dat' ничего нет
поскольку перед делением на k стоит выражение
Код:
k := k+1;
, то k не может равняться 0 если файл не пустой. Следовательно перед использованием этой переменной необходимо сделать проверку длинны файла:
Код:
if fileSize(f)<>0 then s:=s/k 
else writeln('Not record in file');
Всякое безобразие должно быть единообразным. Тогда это называется порядком.

Последний раз редактировалось Anatole; 25.03.2010 в 14:56.
Anatole вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Исправить ошибку! kikimka Помощь студентам 2 16.03.2010 08:17
исправить ошибку ..паскаль. qasw Помощь студентам 6 07.10.2009 20:33
массив записи, не могу исправить ошибку Алекс К. Помощь студентам 3 30.05.2009 02:28
Паскаль, не могу найти ошибку в программе Julinja Помощь студентам 2 17.11.2008 20:42