Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль, задача на записи (http://www.tehnari.ru/f41/t88455/)

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.


An4ik7689 22.05.2013 17:53

Посмотрите, где я допускаю ошибку, как исправить?

Vladimir_S 22.05.2013 21:45

Цитата:

Сообщение от An4ik7689 (Сообщение 910218)
Посмотрите, где я допускаю ошибку, как исправить?

Знаете... попытался отладить - запутался. Много ошибок, но дело не в этом. Я бы на Вашем месте переработал программу, создав массив записей именно по КВАРТИРАМ. Сейчас же у Вас, несмотря на комментарии, массив идет по ЖИТЕЛЯМ. Но если создавать массив по КВАРТИРАМ, то каждое поле такой записи должно стать массивом уже по жильцам квартир. Иначе совсем кошмар.


Часовой пояс GMT +4, время: 04:45.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.