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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 15:30   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию занести код Pascal в файл

Вот сам код:
Код:
const
     n=4;
type
    student=record
    N:byte;
    prizv:string;
    matan:real;
    prog:real;
    Os:real;
    alg:real;
    end;
  var 
        f:file of student; 
        i:integer;
        tabl:array[1..n] of student;
 procedure lin(m:integer);
        var 
           i:integer;
 begin
 for i:=1 to m do 
 write('-');
 writeln;
 end;
 begin
 writeln('VVedi dani stydentiv');
 for i:=1 to 4 do
 begin
 tabl[i].N:=i;
 readln(tabl[i].Prizv,tabl[i].matan,tabl[i].prog, tabl[i].OS, tabl[i].alg);
 end;
 Lin(69);
 writeln('|   | Призвіще | Matematuchnuy | Programyvannya | OS | Algebra | cer|');
writeln('|   |          |    analis     |                |    |  i geom.|    |');
Lin(69);
For i:=1 to n do
begin
write('|', tabl[i].N:2,' |', tabl[i].Prizv:10, '|');
write(tabl[i].matan:15,'|',tabl[i].prog:16,'|', tabl[i].OS:4,'|', tabl[i].alg:9,'|',((tabl[i].matan+tabl[i].prog+tabl[i].OS+tabl[i].alg)/n):0:2,'|');
writeln;
Lin(69);
end;
writeln;
writeln('vidcortov');
Lin(69);
For i:=1 to n do
begin
If ((tabl[i].matan+tabl[i].prog+tabl[i].OS+tabl[i].alg)/4>=4) then
begin
write('|', tabl[i].N:2,' |', tabl[i].Prizv:10, '|');
write(tabl[i].matan:15,'|',tabl[i].prog:16,'|', tabl[i].OS:4,'|', tabl[i].alg:9,'|',((tabl[i].matan+tabl[i].prog+tabl[i].OS+tabl[i].alg)/n):0:2,'|');
writeln;
Lin(69);
end;
end;
end.
думал после обьявление данных, перед процедурок написать
begin
asisgn(f,'anketa')
reset(f)
дальше я так понял где то надо написать while not eof(f) не понимаю где и еще read(f ) влепить куда то надо. помогите плиз
mishammm вне форума Ответить с цитированием
Старый 01.12.2013, 16:51   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Нужно введенные данные занести в файл? Перед последним end'ом написать такой код:
Код:
Assign(f,'anketa.dat);
Rewrite(f);
For i:=1 to n do
  Write(f,tabl[i]);
Close(f);
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 01.12.2013, 17:23   #3
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

изивините условте не так записал:наоборот надо считывания из дат, а затем использовать в программе введеные в дат
mishammm вне форума Ответить с цитированием
Старый 01.12.2013, 18:07   #4
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Разберетесь в каком месте заменить текст программы?
Не забудьте, что файл данных должен быть создан. Запустите сначала первую версию программы, которая и создаст такой файл. А затем эту версию.

Код:
Assign(f,'anketa.dat');
Reset(f);
 writeln('vvodyatsa dani stydentiv');
 for i:=1 to 4 do
 begin
   tabl[i].N:=i;
   Read(tabl[i]);

 end;
 Close(f);
 Lin(69);
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 01.12.2013, 18:18   #5
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

как вы и говорили исправил вот так:
Код:
const
     n=4;
type
    student=record
    N:byte;
    prizv:string;
    matan:real;
    prog:real;
    Os:real;
    alg:real;
    end;
  var 
        f:text; 
        i:integer;
        tabl:array[1..n] of student;
 procedure lin(m:integer);
        var 
           i:integer;
 begin
 for i:=1 to m do 
 write('-');
 writeln;
 end;
 begin
 assign(f,'anketa.dat');
 Reset(f);
 writeln('VVedi dani stydentiv');
 for i:=1 to 4 do
 begin
 tabl[i].N:=i;
 readln(tabl[i].Prizv,tabl[i].matan,tabl[i].prog, tabl[i].OS, tabl[i].alg);
 end;
 Close(f);
 Lin(69);
 writeln('|   | Призвіще | Matematuchnuy | Programyvannya | OS | Algebra | cer|');
writeln('|   |          |    analis     |                |    |  i geom.|    |');
Lin(69);
For i:=1 to n do
begin
write('|', tabl[i].N:2,' |', tabl[i].Prizv:10, '|');
write(tabl[i].matan:15,'|',tabl[i].prog:16,'|', tabl[i].OS:4,'|', tabl[i].alg:9,'|',((tabl[i].matan+tabl[i].prog+tabl[i].OS+tabl[i].alg)/n):0:2,'|');
writeln;
Lin(69);
end;
writeln;
writeln('vidcortov');
Lin(69);
For i:=1 to n do
begin
If ((tabl[i].matan+tabl[i].prog+tabl[i].OS+tabl[i].alg)/4>=4) then
begin
write('|', tabl[i].N:2,' |', tabl[i].Prizv:10, '|');
write(tabl[i].matan:15,'|',tabl[i].prog:16,'|', tabl[i].OS:4,'|', tabl[i].alg:9,'|',((tabl[i].matan+tabl[i].prog+tabl[i].OS+tabl[i].alg)/n):0:2,'|');
writeln;
Lin(69);
end;
end;
end.
открыл файл anketa.dat где написано:
programyvanna11.1.studentprogramyva nna11.1.studentprogramyvanna11.1.st udentprogramyvanna11.1.student ))
И последий вопрос тут не надо было использовать оператор while not eof(f) покане конец файла?
а так спасибо вас огромное
mishammm вне форума Ответить с цитированием
Старый 01.12.2013, 18:24   #6
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Неправильно исправил
Read(f,tab[i]); я написал, прсмотри внимательно.
Вообще ты прав. Надо писать
Код:
I:=1;
While not eof(f) do
Begin
  ...
  Read(f,tabl[i]);
  I:=i+1;
End;
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 01.12.2013, 18:37   #7
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

поставил тут tabl[i].N:=i;
readln(tabl[i].Prizv,tabl[i].matan,tabl[i].prog, tabl[i].OS, tabl[i].alg);
Read(f,tabl[i])
и ошибка Нельзя считывать данные этого типа
mishammm вне форума Ответить с цитированием
Старый 01.12.2013, 18:39   #8
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Не-не
Read(...
Вместо
Readln(...
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 01.12.2013, 18:50   #9
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

read(f,tabl[i].Prizv,tabl[i].matan,tabl[i].prog, tabl[i].OS, tabl[i].alg); так что ли ?
тогда написало входная строка имеет неверный формат )
mishammm вне форума Ответить с цитированием
Старый 01.12.2013, 18:51   #10
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию


Read(tabl[i]);
Читается запись полностью.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка. Берём hex-код, шифруем hex-код, собираем всё в файл. Poltish Общие вопросы Delphi 2 21.08.2013 12:57
[MASM] найти позицию слова и занести результат в файл na4inaushij Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 15.02.2012 22:55
занести инфу в файл , затем считать её при новом сеансе frmSm Общие вопросы C/C++ 1 04.06.2010 15:33
Дописать код в файл! Trol-100 Общие вопросы C/C++ 8 24.10.2009 17:49
Код в bat файл ryton SQL, базы данных 1 30.06.2008 09:33