10.05.2012, 16:23 | #1 (permalink) |
Member
Регистрация: 10.05.2012
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задача на файлы
ФИО:..........40 знаков № курса.....1 знак № группы....1 знак успеваемость-5 экзаменов в каждой из 10 сессий форма обучения (целевая\договорная)..1 знак Экзамен наимен.предмета....10 знаков оценка..................1 знак создать файл студент.Занесите в отдельный файл записи из файла Студент о студентах 5-го курса ,упорядочив их по убыванию сумм баллов за все время обучения(фио,балл) Код:
type session = array[1..10,1..5] of record //Сведения об экзаменах name: string[10]; mark: 1..5; end; student = record // Сведения о студенте fio: string[40]; curs: 1..5; group: 1..9; result:session; end; TFile= file of student ; //-------------------------------------------------------- procedure vvodstudent(var st:student); // Ввод записи с клавиатуры var i,j:integer; begin with st do begin write('Введите ФИО: '); readln(fio); write('Введите курс: '); readln(curs); write('Введите группу: '); readln(group); writeln('Введите результаты сессий:'); i:=1; repeat writeln('Сейссия №',i,': '); for j:=1 to 5 do begin write('Название ',j,'-го экзамена: '); readln(result[i,j].name); write('Оценка за ',j,'-й экзамен: '); readln(result[i,j].mark); end; inc(i); until (i=curs*2+1); end; writeln('Ввод закончен!'); end; //------------------------------------------------------------------- procedure writestudent(var st:student); // Печать записи var i,j:integer; begin with st do begin writeln(FIO,', ',curs,' курс, ',group,' группа.'); for i:=1 to curs*2 do begin write(' Сессия ',i,': '); for j:=1 to 5 do write(result[i,j].name,': ',result[i,j].Mark,', '); readln end end; end; var f1:file; rec:student; begin Assign(f1,'af.int'); rewrite(f1); Write(f1,writestudent(rec)); Close(f1); Reset(f1); while not Eof(f1) do begin end; end. |
10.05.2012, 16:23 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Пока участники форума думают над вашей проблемой, обратите внимание на это Задача C++ Задача на C# |
10.05.2012, 16:48 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да... накручено всего много, а вот, похоже, того, что надо, как раз нету. Я бы, решая эту задачу, создал массив студентов (записей student), а в самой записи сделал бы еще одно поле суммы баллов, вычисление каковой запихал бы в конец процедуры ввода. Далее провел бы отбор по курсу (5) и упорядочение по суммам баллов методом пузырька.
|
10.05.2012, 17:07 | #3 (permalink) | |
Member
Регистрация: 10.05.2012
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
10.05.2012, 17:14 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Дык... Открыть файл на запись да циклом по студентам и отправить.
Кстати, заметил, что еще одного поля не хватает - символа формы обучения. И вопрос: а зачем в цикле по сессиям при вводе данных Вы применили Repeat - Until, а не просто for - to - do? |
10.05.2012, 17:42 | #5 (permalink) |
Member
Регистрация: 10.05.2012
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Код:
const n=10; type session = array[1..10,1..5] of record subject: string[10]; mark: 1..5; end; student=record fio:string[40]; curs:1..5; group:1..9; formaobuch:string[1]; end; TFile= file of student ; tmas=array [1..n] of student; //------------------------------------------------------ procedure vvoddannuh(var a:tmas); //ввод var i,s:Integer; begin for i:=1 to n do begin Writeln('введите фио'); Readln(a[i].fio); Writeln('введите курс'); Readln(a[i].curs); Writeln('введите группу'); Readln(a[i].group); Writeln('введите форму обучения'); Readln(a[i].formaobuch); writeln; end end; //-------------------------------------------------------- Procedure vuvoddannuh(a:tmas); var i:Integer; begin writeln ('--------------------------------------------------------------------------'); writeln (' фио / курс / группа/ форма обучения / '); writeln ('--------------------------------------------------------------------------'); for i:=1 to n do writeln(a[i].fio,' ',a[i].curs,' ',a[i].group,' ',a[i].formaobuch); end; //------------------------------------------------------------------- |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
10.05.2012, 23:08 | #6 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
const n=10; type session = array[1..10,1..5] of record name: string; mark: 2..5; end; student = record fio: string; curs: 1..5; group: 1..9; result:session; formaobuch:char; sum:Word; end; TFile= file of student ; tmas=array [1..n] of student; //-------------------------------------------------------- procedure vvodstudent(var st:student); var i,j:integer; begin with st do begin sum:=0; write('Name: '); readln(fio); write('Course: '); readln(curs); write('Group: '); readln(group); writeln('Session results:'); for i:=1 to curs*2 do begin writeln('Session N',i,':'); for j:=1 to 5 do begin write('Subject of examination: '); readln(result[i,j].name); write('Mark: '); readln(result[i,j].mark); Inc(sum,result[i,j].mark); end; end; write('Form of study: '); readln(formaobuch); end; end; //------------------------------------------------------------------- procedure writestudent(var st:student); var i,j:integer; begin with st do begin writeln('Name: ',FIO,', Course: ',curs,' Group: ',group,' Form: ',formaobuch); for i:=1 to curs*2 do begin writeln('Session ',i,': '); for j:=1 to 4 do write(result[i,j].name,': ',result[i,j].Mark,', '); writeln(result[i,5].name,': ',result[i,5].Mark); end; end; Writeln('Press "Enter" to continue...'); end; var f1:Tfile; rec,rec5:tmas; q,p,N5:Byte; Dummy:student; begin Assign(f1,'af.int'); rewrite(f1); for q:=1 to n do begin vvodstudent(rec[q]); Write(f1,rec[q]); writeln; end; Close(f1); writeln; for q:=1 to n do begin writestudent(rec[q]); readln; end; writeln; N5:=0; for q:=1 to n do If rec[q].curs=5 then begin Inc(N5); rec5[N5]:=rec[q]; end; For p:=1 to N5-1 do For q:=1 to N5-p do if rec5[q].sum<rec5[q+1].sum then begin Dummy:=rec5[q]; rec5[q]:=rec5[q+1]; rec5[q+1]:=Dummy; end; Assign(f1,'af5.int'); rewrite(f1); for q:=1 to N5 do begin writeln(rec5[q].fio:40,rec5[q].sum:4); write(f1,rec5[q]); end; Close(f1); readln; end. |
|
11.05.2012, 20:44 | #8 (permalink) |
Member
Регистрация: 10.05.2012
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Код:
const n=10; type session = array[1..10,1..5] of record name: string; mark: 2..5; end; student = record fio: string; curs: 1..5; group: 1..9; result:session; formaobuch:char; sum:Word; end; TFile= file of student ; tmas=array [1..n] of student; //-------------------------------------------------------- procedure vvodstudent(var st:student); var i,j:integer; begin with st do begin sum:=0; write('Name: '); readln(fio); write('Course: '); readln(curs); write('Group: '); readln(group); writeln('Session results:'); for i:=1 to curs*2 do begin writeln('Session N',i,':'); for j:=1 to 5 do begin write('Subject of examination: '); readln(result[i,j].name); write('Mark: '); readln(result[i,j].mark); Inc(sum,result[i,j].mark); end; end; write('Form of study: '); readln(formaobuch); end; end; //------------------------------------------------------------------- procedure writestudent(var st:student); var i,j:integer; begin with st do begin writeln('Name: ',FIO,', Course: ',curs,' Group: ',group,' Form: ',formaobuch); for i:=1 to curs*2 do begin writeln('Session ',i,': '); for j:=1 to 4 do write(result[i,j].name,': ',result[i,j].Mark,', '); writeln(result[i,5].name,': ',result[i,5].Mark); end; end; Writeln('Press "Enter" to continue...'); end; var f1:Tfile; rec,rec5:tmas; q,p,N5:Byte; Dummy:student; begin Assign(f1,'af.int'); rewrite(f1); for q:=1 to n do begin vvodstudent(rec[q]); Write(f1,rec[q]); writeln; end; Close(f1); writeln; for q:=1 to n do begin writestudent(rec[q]); readln; end; writeln; N5:=0; for q:=1 to n do If rec[q].curs=5 then begin Inc(N5); rec5[N5]:=rec[q]; end; For p:=1 to N5-1 do For q:=1 to N5-p do if rec5[q].sum<rec5[q+1].sum then begin Dummy:=rec5[q]; rec5[q]:=rec5[q+1]; rec5[q+1]:=Dummy; end; Assign(f1,'af5.int'); rewrite(f1); for q:=1 to N5 do begin writeln(rec5[q].fio:40,rec5[q].sum:4); write(f1,rec5[q]); end; Close(f1); readln; end. |
11.05.2012, 23:20 | #9 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
name: string[10]; и fio:string[40]; Должно помочь. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|