Описать структуру с именем STUDENT - Turbo Pascal (29911)
Формулировка задачи:
Нужна помощь!
Описать структуру с именем STUDENT, содержащую следующие поля:
- номер;
- фамилия и имя;
- год рождения;
- год поступления в университет;
- структура OCENKI, содержащая четыре поля: физика, математика, программирование, история;
написать программу, выполняющую следующие действия с помощью процедур или функций:
- ввод с клавиатуры данных в файл, состоящий из структур типа STUDENT; записи должны быть упорядочены номеру;
- чтение данных из этого файла;
- вывод на дисплей анкетных данных студентов, получивших одну оценку 3;
- если таких студентов нет, вывести соответствующее сообщение.
Решение задачи: «Описать структуру с именем STUDENT»
textual
Листинг программы
program pr;
type
student=record
number:integer;
nameson:string[50];
yearofbirth:integer;
enter:integer;
end;
marks=record
phisical:integer;
math:integer;
prog:integer;
history:integer;
end;
var
i,n:integer;
stud:array [1..100] of student; // массив студентов (массив структур student)
ocenki:array [1..100] of marks;
procedure fill();
var i:integer;
f:file of student;
begin
assign(f,'c:\studentsfill.txt');
rewrite(f);
for i:=1 to n do begin
writeln('Введите номер студента');
readln(stud[i].number);
writeln('Введите имя и фамилию студента');
readln(stud[i].nameson);
writeln('Введите год рождения');
readln(stud[i].yearofbirth);
writeln('Введите год поступления');
readln(stud[i].enter);
writeln('Введите оценки по физике');
readln(ocenki[i].phisical);
writeln('Введите оценки по математике');
readln(ocenki[i].math);
writeln('Введите оценки по программированию');
readln(ocenki[i].prog);
writeln('Введите оценки по истории');
readln(ocenki[i].history);
write(f,stud[i]);
end;
close (f);
end;
procedure show();
var i:integer;
f:file of student;
begin
assign(f,'c:\studentsfill.txt');
reset (f);
while not eof (f) do
begin
inc(i);
read(f,stud[i]);
writeln(stud[i].number);
writeln(stud[i].nameson);
writeln(stud[i].yearofbirth);
writeln(stud[i].enter);
writeln('Физика:',ocenki[i].phisical);
writeln('Математика:',ocenki[i].math);
writeln('Программирование:',ocenki[i].prog);
writeln ('История:',ocenki[i].history);
writeln;
end;
close (f);
end;
procedure bad(s:student);
var i,j:integer;
begin
for i:=1 to n do
if (ocenki[i].phisical=3) or (ocenki[i].math=3)or (ocenki[i].prog=3) or (ocenki[i].history=3)then
begin
writeln('Тройка у:');
writeln(stud[i].nameson);
end;
end;
begin
writeln('Введите количество студентов:');
readln(n);
fill();
show();
bad(stud[i+1]);
end.
Объяснение кода листинга программы
- Создается тип данных
student, который представляет структуру с именем STUDENT. - Создается переменная
iиnтипаinteger. - Создается массив
studтипаarray [1..100] of student. Это означает, что будет создано 100 экземпляров структуры STUDENT и они будут храниться в массивеstud. - Создается массив
ocenkiтипаarray [1..100] of marks. Это означает, что будет создано 100 экземпляров структуры MARKS и они будут храниться в массивеocenki. - Создается процедура
fill, которая будет заполнять массивstudданными о студентах. - Внутри процедуры
fillпроисходит цикл, который повторяется n раз. Для каждого студента вводятся его номер, имя и фамилия, год рождения и год поступления. Затем вводятся оценки по физике, математике, программированию и истории. Данные о студенте записываются в файлstudentsfill.txt. - После завершения цикла
fillфайлstudentsfill.txtзакрывается. - Создается процедура
show, которая будет выводить информацию о студентах из массиваstud. - Внутри процедуры
showпроисходит цикл, который повторяется до конца файлаstudentsfill.txt. Для каждого студента выводятся его номер, имя, фамилия, оценки по физике, математике, программированию и истории. - После завершения цикла
showфайлstudentsfill.txtзакрывается. - Создается процедура
bad, которая будет выводить информацию о студентах, у которых оценки по определенным предметам равны 3. - Внутри процедуры
badпроисходит цикл, который повторяется до конца массиваstud. Если у студента оценки по физике, математике, программированию или истории равны 3, то выводится его имя. - После завершения цикла
badпроисходит выход из программы.