Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создать тип данных и описать структуру, отображающую следующую информацию

64K
19 декабря 2010 года
DenHuk
2 / / 19.12.2010
Создать тип данных и описать структуру, отображающую следующую информацию:
• название государства,
• площадь территории,
• численность населения,
• общий доход населения в долларах,
• количество больниц, школ, вузов,
• наличие выхода к морю,
• форма государства (республика, монархия, малое государство)
Создать динамическое кольцо из данных о 5-6 государствах. Предусмотреть вывод всей введенной информации, промежуточных результатов и результатов выполнения указанного ниже задания. После выполнения удаления добавить в кольцо два новых элемента.
Вывести данные о трех государствах с минимальными доходами населения,
указав среднее количество вузов на душу населения. данные о государстве с наибольшим показателем - удалить не работает((
Код:
Program BBC;
uses crt;
type
mas=array [1..3] of integer;
gos=record
     naz: string[20];
     pl,ch,doh: Integer;
     kol: mas;
     mor: char;
     case form: integer of
         1: ();
         2: ();
         3: ();
     end;
Pelem=^Telem;
Telem=record
       Inf: gos;
       Left, Right: Pelem;
      end;
Var
   Head: Pelem;
   n,i,j:integer;
   x: gos;  el: pelem;
Procedure Tab(n: Integer); Begin GoToXY(n,WhereY); End;
 
Procedure vvod;
begin
      with x do
          begin
              WriteLn('Государство № ',i);
              Write('Название: '); ReadLn(naz);
              Write('Площадь территории: '); ReadLn(pl);
              Write('Численность населения: '); ReadLn(ch);
              Write('Общий доход населения в $: '); ReadLn(doh);
              Write('Количество больниц: '); ReadLn(kol[1]);
              Write('Количество школ: '); ReadLn(kol[2]);
              Write('Количество вузов: '); ReadLn(kol[3]);
              Write('Наличие выхода к морю: '); ReadLn(mor);
              WriteLn('Форма правления: ');
              WriteLn('(1-Республика, 2-Королевство');
              WriteLn('     3-малое гос-во        )');
              ReadLn(form);
              clrscr;
           end;
  end;
Procedure newring(x: gos);
begin
     New(Head); Head^.inf:=x;
     Head^.Left:=Head;
     Head^.Right:=Head;
end;
Procedure add(x: gos);
begin
     New(El); El^.inf:=x;
     Head^.left^.Right:=El;
     El^.Left:=Head^.Left;
     El^.right:=Head;
     Head^.Left:=El;
End;
procedure upor;
var d: pelem;
begin
     for i:=1 to n do
     begin
     el:=head;
     while el^.right<>head do
     begin
     d:=el^.right;
     if el^.inf.doh>d^.inf.doh then
     begin
          x:=d^.inf;
          d^.inf:=el^.inf;
          el^.inf:=x;
     end;
     el:=el^.right;
     end;
     end;
     for i:=1 to n do
     begin
     el:=head;
     while el^.right<>head do
     begin
     d:=el^.right;
     if (el^.inf.doh=d^.inf.doh) and (el^.inf.kol[3]/el^.inf.ch>d^.inf.kol[3]/el^.inf.ch) then
     begin
          x:=d^.inf;
          d^.inf:=el^.inf;
          el^.inf:=x;
     end;
     el:=el^.right;
     end;
     end;
end;
procedure print;
begin
     El:=Head;  j:=1;
     repeat
     with El^.inf do
         begin
              WriteLn('Государство № ',j);
              WriteLn('Название: ',naz);
              WriteLn('Площадь территории: ',pl);
              WriteLn('Численность населения: ',ch);
              WriteLn('Общий доход населения в $: ',doh);
              WriteLn('Количество больниц: ',kol[1]);
              WriteLn('Количество школ: ',kol[2]);
              WriteLn('Количество вузов: ',kol[3]);
              WriteLn('Наличие выхода к морю: ',mor);
              WriteLn('Форма правления: ');
              if form=1 then writeln('Рeспублика');
              if form=2 then writeln('Монархия');
              if form=3 then writeln('Малое гос-во');
           readkey;  clrscr;
         end;  j:=j+1;
    El:=El^.right;
    until El=Head;
end;
Procedure delmax;
begin
el:=Head;
while el^.right<>Head do
begin
     if el^.inf.doh>300 then
     begin
          El^.left^.right:=El^.right;
          El^.right^.left:=El^.left;
          Dispose(el);
     end;
el:=el^.right;
end;
WriteLn('Данные  удалены');
end;
 
 
begin
     clrscr;
     Write('Введите кол-во государств: '); ReadLn(n);
     clrscr; i:=1;
     with x do vvod;
     newring(x);
     for i:=2 to n do
     begin
         vvod;
         add(x);
     end;
     WriteLn('Формирование кольца завершено');
     WriteLn('Элементы кольца');
     print;
     upor;
 
     WriteLn('Упорядоченные элементы кольца');
     print;
     delmax;
 
     WriteLn('Кольцо после удаления c наибольшим доходом');
     print;
 
 
      Writeln('Введите данные ещё о двух государствах: ');
     i:=1;
     with x do vvod;
     newring(x);
     for i:=2 to 2 do
     begin
         vvod;
         add(x);
     end;
 
     repeat until keypressed;
 end.

помогите исправить недоработку....
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог