Здравствуйте. Прошу помощи решить задачку, которая идет у меня на ссесию. Можете посмотреть во вложении. Но я еще и в сообщении ее написал.
Описание создаваемых файлов (используются далее в индивидуальных вариантах) Создается типизированный файл записей. Предварительно создать структурированный пользовательский тип запись
Файл Студент Структура записи: •ФИО (40 знаков); •номер курса (1 знак); •номер группы (1 знак); • успеваемость — 5 экзаменов в каждой из 10 сессий; •форма обучения (целевая, договорная) (1 знак); • экзамен: — наименование предмета (10 знаков); — оценка (1 знак). Записи упорядочены по номеру курса, внутри курса — по номеру группы, в группе—по ФИО.
А вот и сама задача: 12. Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, выполнив перевод студентов на следующий курс.
Очень нужно решить, я не знаю как: не работал с типизированными файлами. Спасибо.
Lapp
21.12.2007 16:26
AJIMA3, таких задач тут решалось - не пересчитать. Поищи.
А про файлы прочти в FAQ, там есть специальная тема.
Сделай запись (тип). Заведи файл этих записей. Заведи переменную (запись). Заполни поля. Запиши. Заполни по новой. Запиши... Считывать аналогично.
AJIMA3
21.12.2007 16:44
Спасибо за ответ, но боюсь мне не удасться решить, даже прочитав темы. Инфы я начитался, а вот практики нет, плюс мне эту задачу уже на днях сдавать! Прошу решите. Я не решу ее сам! Прошу! Я уже несколько дней зря убил, а толку нет! Спасибо.
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.
Прошу помогите!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.