Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 22.05.2013, 17:50   #1 (permalink)
An4ik7689
Member
 
Регистрация: 06.01.2012
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль, задача на записи

Программы описывающая массив жильцов дома:номер квартиры, фамилии, имя, возраст,
(для лиц старце 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:50
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Обычно первым делом эффективнее всего прочитать похожие темы

Задача, Паскаль
Задача, Паскаль
Задача. Записи Pascal
Паскаль. Проверить наличие цифр в записи числа
Задача. Паскаль
Паскаль и записи

Старый 22.05.2013, 17:53   #2 (permalink)
An4ik7689
Member
 
Регистрация: 06.01.2012
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Посмотрите, где я допускаю ошибку, как исправить?
An4ik7689 вне форума   Ответить с цитированием
Старый 22.05.2013, 21:45   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.