Помощь - Поиск - Пользователи - Календарь
Полная версия: типизированные файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
AJIMA3
Здравствуйте. Прошу помощи решить задачку, которая идет у меня на ссесию. Можете посмотреть во вложении.
Но я еще и в сообщении ее написал.


Описание создаваемых файлов (используются далее в индивидуальных вариантах)
Создается типизированный файл записей. Предварительно создать структурированный пользовательский тип запись

Файл Студент
Структура записи:
•ФИО (40 знаков);
•номер курса (1 знак);
•номер группы (1 знак);
• успеваемость — 5 экзаменов в каждой из 10 сессий;
•форма обучения (целевая, договорная) (1 знак);
• экзамен:
— наименование предмета (10 знаков);
— оценка (1 знак).
Записи упорядочены по номеру курса, внутри курса — по номеру группы, в группе—по ФИО.


А вот и сама задача:
12. Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, выполнив перевод студентов на следующий курс.

Очень нужно решить, я не знаю как: не работал с типизированными файлами. Спасибо.
Lapp
AJIMA3, таких задач тут решалось - не пересчитать. Поищи.

А про файлы прочти в FAQ, там есть специальная тема.

Сделай запись (тип). Заведи файл этих записей. Заведи переменную (запись). Заполни поля. Запиши. Заполни по новой. Запиши...
Считывать аналогично.
AJIMA3
Спасибо за ответ, но боюсь мне не удасться решить, даже прочитав темы. Инфы я начитался, а вот практики нет, плюс мне эту задачу уже на днях сдавать! Прошу решите. Я не решу ее сам! mega_chok.gif Прошу! Я уже несколько дней зря убил, а толку нет! Спасибо.
AJIMA3
Вот тут у меня есть наброски, но что-то не работает....

uses crt;

const
n = 1;
m = 1;
count = 3;

type
examine = record
exname: string;
mark: byte;
end;
student = record
FIO: string;
kursnum: byte;
groupnum: byte;
FO: char;
uspeh: array[1..n,1..m]of examine;
end;

procedure studentread(var stud: student);
var
i, j: word;
begin
with stud do
begin
Writeln('BBEDITE FIO:');
readln(FIO);
Writeln('BBEDITE KURS:');
readln(kursnum);
Writeln('BBEDITE GROUP:');
readln(groupnum);
Writeln('BBEDITE Formu Obucheniya:');
readln(FO);
{ readln(FIO, kursnum, groupnum, FO);}
for i:=1 to n do
for j:=1 to m do
with uspeh[i,j] do
readln(exname, mark);
end;
writeln;
end;

procedure studentwrite(stud: student);
var
i, j: word;
begin
with stud do
begin
writeln('FIO: ',FIO, ' kurs: ', kursnum, ' group: ', groupnum, ' education form: ',FO);
writeln('examination:');
for i:=1 to n do
for j:=1 to m do
with uspeh[i,j] do
writeln(exname, ' ', mark);
end;
end;

procedure studentswap(var stud1, stud2: student);
var
tempstud: student;
begin
tempstud:=stud1;
stud1:=stud2;
stud2:=tempstud;
end;

var
onestud: student;
students:array[1..count]of student;
f, next: file of student;
i, j: word;
begin
for i:=1 to count do
studentread(students[i]);
for i:=1 to count-1 do
begin
for j:=i+1 to count do
if (students[j].kursnum < students[i].kursnum) or
((students[j].kursnum = students[i].kursnum) and (students[j].groupnum < students[i].groupnum)) or
((students[j].kursnum = students[i].kursnum) and (students[j].groupnum = students[i].groupnum) and
(students[j].FIO < students[i].FIO)) then
studentswap(students[j], students[i]);
end;
assign(f, 'studenttest.txt');
rewrite(f);
for i:=1 to count do
write(f, students[i]);
close(f);
assign(next, 'studenttest0.txt');
rewrite(next);
reset(f);
for i:=1 to count do
begin
read(f, onestud);
if onestud.kursnum = 5 then
onestud.kursnum:= 0
else
inc(onestud.kursnum);
write(next, onestud);
studentwrite(onestud);
end;
close(f);
close(next);
readln;
end.


Прошу помогите!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.