Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ создание записи и запись в файл

Автор: Павел 20.12.2003 1:48

Люди, помогите пожалуйста решить задачку:
Type человек=record;
имя :packed array[1..9] of char;
возраст:1..99
end;
группа=file of человек;
     Описать процедуру СамыеМолодые(ГР), печатающая имена всех людей из непустой группы ГР, имеющих наименьший возраст.

Нужно сначала записать всех в файл, а затем открыть его и отсортировать тех, кто моложе 25 лет.

Буду очень признателен, кто поможет.

Автор: oleg309 21.12.2003 18:49

Слушай, Павел, не могу въехать в условие. Выложи как дано в оригинале

Автор: Pasha 21.12.2003 19:25

В оригинале дано так:
Type человек=record;
имя :packed array[1..9] of char;
возраст:1..99
end;
группа=file of человек;
Описать процедуру СамыеМолодые(ГР), печатающая имена всех людей из непустой группы ГР, имеющих наименьший возраст.
 
Но препод сказал, что нужно сначала создать список, записать в файл, а затем открыть его и отсортировать тех людей, которые моложе 25 лет.
В принципе задание можно немного самому изменять, т.к. за этим никто особо не следит.

Автор: Павел 25.12.2003 2:24

2 oleg309: может я не очень хорошо объяснил или задача очень сложная? скажи что-нить, а то очень нужно ее решить. плиз...

Автор: Павел 28.12.2003 15:23

Помощи не дождался, пришлось решать самому. Может кому-нибадь понадобиться, поэтому выкладываю решение.

Код
Program zapis;
const m=9; n=3;
TYPE chel=record
    fam:packed array[1..m,1..n] of char;
    vozr:array[1..n] of integer;
      end;
var
 spisok:chel;
 k,i,t:integer;
 f:text;
 str:string;
BEGIN
writeln;
write('vvesti name str=');
readln(str);
assign(f,str);
writeln('hotite zapisat v file(0) ili protschitat ego(1)?');
read(t);
if t=0 then
begin
rewrite(f);
writeln('familiya  ','vozrast');
for i:=1 to n do
begin
for k:=1 to m do
read(spisok.fam[k,i]);
read(spisok.vozr[i]);
readln;
end;
for i:=1 to n do
for k:=1 to m do
writeln(f,spisok.fam[k,i],spisok.vozr[i]);
end;
if t=1 then
begin
reset(f);
for i:=1 to n do
for k:=1 to m do
readln(f,spisok.fam[k,i],spisok.vozr[i]);
end;
for i:=1 to n do
for k:=1 to m do
if spisok.vozr[i]<25 then
write(spisok.fam[k,i]);
close(f);
END.

Автор: oleg309 1.01.2004 22:31

Всех с НОВЫМ ГОДОМ Господа!

Могу, Паша, скинуть свой вариант (если надо). Извени, что молчал, сам понимаешь предпраздничная суета...
А то, что решал САМ так это только плюс!