Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2018, 08:14   #1
qqq9
Новичок
Джуниор
 
Регистрация: 08.02.2018
Сообщений: 1
По умолчанию Кто сможет доделать Струкутра типы данных я не знаю как доделать

сама задача такая

Код:
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)
Модератор

Последний раз редактировалось Serge_Bliznykov; 08.02.2018 в 10:42.
qqq9 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто знает как доделать программу Demigod324 C++ Builder 0 20.05.2013 19:13
Ну могу доделать программы С++ (Так как плохо знаю С++) Veyron Помощь студентам 1 01.02.2012 15:41
Кто может доделать? Kil001 Visual C++ 1 15.12.2011 14:50
не знаю как доделать malir Помощь студентам 0 16.12.2009 17:14
не знаю как доделать прогу на паскале pavel42 Помощь студентам 8 06.05.2009 16:34