сама задача такая
Код:
type студент=record
фамилия
специальность
год поступления
номер группы
end;
и определить:
1. имеются ли однофамильцы;
2. группы, где учатся менее 18 учащихся;
3. специальность, на которой учатся больше всего учащихся.
2 и 3 доделать
Код:
uses crt;
type
student = record
fam: string[64];
spec: string[32];
god: integer;
grup: string[8];
end;
var
n, i, j, k: byte;
fmain: file of student;
fname: string;
procedure CreateFile(var ft: file of student);
var
i, n: integer;
t: student;
begin
if FileExists(fname) then
exit
else
begin
rewrite(ft);
write('Введите количество студентов: ');
readln(n);
writeln('Введите данные о ', n, ' студентах: ');
for i := 1 to n do
begin
writeln('Студент № *', i, ': ');
write('Фамилия: ');
readln(t.fam);
write('Специальность: ');
readln(t.spec);
write('Год поступления: ');
readln(t.god);
write('Номер группы: ');
readln(t.grup);
write(ft, t);
end;
close(ft);
end;
end;
procedure WriteDataToFile(var ft: file of student);
var
i, n: integer;
t: student;
begin
if FileExists(fname) then
begin
reset(ft);
Seek(ft, filesize(ft));
write('Введите количество студентов: ');
readln(n);
writeln('Введите данные о ', n, ' студентах: ');
for i := 1 to n do
begin
writeln('Студент № *', i, ': ');
write('Фамилия: ');
readln(t.fam);
write('Специальность: ');
readln(t.spec);
write('Год поступления: ');
readln(t.god);
write('Номер группы: ');
readln(t.grup);
write(ft, t);
end;
close(ft);
end
else
begin
clrscr;
writeln('Файл не создан!');
exit;
readln;
end;
end;
procedure PrintFile(var ft: file of student);
var
i: integer;
t: student;
begin
clrscr;
i := 0;
if FileExists(fname) then
begin
reset(ft);
while not eof(ft) do
begin
inc(i);
read(ft, t);
writeln('Студент № *', i, ': ', t.fam:20, t.spec:20, t.god:5, t.grup:5);
end;
end;
close(ft);
writeln('Нажмите Enter для выхода в меню');
readln;
end;
procedure SortFile(var ft: file of student); // если кто сможет сортировку тоже: сортировки данных по одному из признаков
begin
end;
procedure FoundByName(var ft: file of student);
var
j, k, i, n: integer;
t: student;
a: array [1..100] of student;
begin
reset(ft);
while not eof(ft) do
begin
inc(i);
read(ft, t);
a[i] := t;
end;
close(ft);
n := i;
writeln('Однофамильцы:');
k := 0;
for i := 1 to n - 1 do
for j := i + 1 to n do
if a[i].fam = a[j].fam then
begin
k := 1;
writeln('Группа: ', a[i].grup:5, a[i].fam:20, a[i].spec:20, a[i].god:5);
writeln('Группа: ', a[j].grup:5, a[j].fam:20, a[j].spec:20, a[j].god:5);
end;
if k = 0 then
writeln('Однофамильцев нет!');
writeln('Нажмите Enter для выхода в меню');
readln;
end;
procedure FoundByQ(var ft: file of student); //Группы где учатся менее 18 учащихся
var
j, k, i, n: integer;
t: student;
a: array [1..100] of student;
begin
end;
procedure FoundBySpec(var ft: file of student); //специальность, на которой учатся больше всего учащихся.
begin
end;
begin
fname := 'students.dat';
assign(fmain, fname);
repeat
clrscr;
writeln('1. Создать файл.');
writeln('2. Добавить данные в файл.');
writeln('3. Просмотреть файл.');
writeln('4. Сортировка данных по одному из признаков.');
writeln('5. Определить имеются ли однофамильцы.');
writeln('6. Определить группы, где учатся менее 18 учащихся.');
writeln('7. Определить специальность, на которой учатся больше всего учащихся.');
writeln('8. Выход.');
readln(k);
case k of
1: CreateFile(fmain);
2: WriteDataToFile(fmain);
3: PrintFile(fmain);
4: SortFile(fmain);
5: FoundByName(fmain);
6: FoundByQ(fmain);
7: FoundBySpec(fmain);
8: Exit
else
writeln('Неверный пункт меню!');
end; //of case
until k = 8;
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор