An4ik7689 |
22.05.2013 17:50 |
Паскаль, задача на записи
Программы описывающая массив жильцов дома:номер квартиры, фамилии, имя, возраст,
(для лиц старце 18 лет): род занятий(учеба, работа, пенсия), место учебы, работы,
(для пенсионеров год выхода на пенсию).
- Найти квартиры с максимальным числом жильцов.
- Найти самого юного и самого пожилого жильца;
- Найти студентов, пенсионеров.
Помогите пожалуйста, программа работает, но не правильно и не полностью. Нужно что бы еще выводило (например, когда находим самого юного жильца, то должно вывести "Самому юному жителю дома 15 лет. это Иванов Петр из 5 квартиры".
Не могу ничего придумать, помогите.
Код:
Program Dom;
Uses crt;
Const n=4; {Кол-во Квартир}
Type Kvartira = record
NomKv: integer; {Номер квартиры}
Famil: string; {Фамилия}
Imya: string; {Имя}
Vozrast: integer; {Возраст}
RodZan: string; {Род занятий(учеба, работа, пенсия)}
Mesto: string; {Место работы, учебы, либо год выхода на пенсию}
end;
Var x: array [1..n] of Kvartira;
max, MaxKv,SU,SP, i, k: integer;
MaxKolJilKv: integer; {Максимальное кол-во жителей в квартире}
SamUnn: integer; {Самый юный житель}
SamPoj: integer; {Самый пожилой житель}
Stud: integer; {Студент}
Pension: integer; {Пенсионер}
Begin
clrscr;
For i:= 1 to n do {Вводим данные о квартирах}
with x[i] do
begin
Writeln('Введите номер квартиры: ');
Readln(NomKv);
Writeln('Введите фамилию: ');
Readln(Famil);
Writeln('Введите имя: ');
Readln(Imya);
Writeln('Введите возраст: ');
Readln(Vozrast);
Writeln('Введите род деятельности(учеба, работа, пенсия): ');
Readln(RodZan);
Writeln('Место(учебы, работы) либо год выхода на пенсию: ');
Readln(Mesto);
end;
Writeln(' ');
For i:= 1 to n do {Выводим данные на экран}
with x[i] do
begin
Writeln('Номер квартиры: ',NomKv:2,' Фамилия: ',Famil:10,' Имя: ',Imya:10,' Возраст: ',Vozrast:2,' Род занятий: ',RodZan:8,' Место: ',Mesto:15);
end;
For i:= 1 to n do
begin
for k:= i+1 to n do
begin
if x[i].NomKv=x[k].NomKv
then inc(MaxKolJilKv); {Номер квартиры с максимальным кол-вом жильцов }
if max < x[i].NomKv then {Максимальное кол-во жильцов в квартире}
begin
max:=x[i].NomKv;
MaxKv:=i;
if SU > x[i].Vozrast then {Самый юный житель дома}
begin
SU:=x[i].Vozrast;
SamUnn:=i;
if SP < x[i].Vozrast then {Самый пожилой житель дома}
begin
SP:=x[i].Vozrast;
SamPoj:=i;
end;
end;
end;
end;
end;
{ выводим результат}
writeln('В квартире '+IntToStr(MaxKolJilKv)+'максимальное кол-во жильцов ('+IntToStr(MaxKv)+')');
writeln('');
writeln('Самому юному жителю дома '+IntToStr(SamUnn)+' лет ');
writeln('');
writeln('Самому пожилому жителю дома '+IntToStr(SamPoj)+' лет ');
writeln('');
Readln;
end.
|