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

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

Форум «Всё о Паскале» _ Задачи _ типизированные файлы

Автор: AJIMA3 21.12.2007 14:46

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


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

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


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

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


Прикрепленные файлы
Прикрепленный файл  zadachka.zip ( 3.4 килобайт ) Кол-во скачиваний: 213

Автор: Lapp 21.12.2007 16:26

AJIMA3, таких задач тут решалось - не пересчитать. Поищи.

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

Сделай запись (тип). Заведи файл этих записей. Заведи переменную (запись). Заполни поля. Запиши. Заполни по новой. Запиши...
Считывать аналогично.

Автор: AJIMA3 21.12.2007 16:44

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

Автор: AJIMA3 21.12.2007 17:33

Вот тут у меня есть наброски, но что-то не работает....


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.


Прошу помогите!