• Помогите с программной на паскале, пожалуйста)

    Используя следующий фрагмент программы, опишите перечисленные ниже функции:
    Type
    name = (Аня, Валя, Женя, Петя, Саша, Таня, Шура, Юра);
    information = record
    pol : (man, woman);
    height : 140..200
    end;
    group = array [name] of information;
    а) функция СредРост( ГР ) определяет средний рост женщин из группы ГР;
    б) функция Высокий( ГР ) определяет имя самого высокого мужчины из группы ГР;
    в) логическая функция ОдинРост( ГР ) проверяет, есть ли в группе ГР хотя бы два человека одинакового роста.

Ответы 2

  • Хороший пример того, как отвратительно в Паскале сделана работа с перечислимыми типами. Так это еще с расширениями Паскаля, в версии АВС.Net, такими как .ToString.
    • Автор:

      spence
    • 5 лет назад
    • 0
  • type  name=(Anya,Valya,Zhenya,Petya,Sasha,Tanya,Shura,Yura);  gender=(man,woman);  information=record    pol:gender;    height:140..200    end;  group=array[Anya..Yura] of information;function SrRost(var Gr:group):single;var  i:name;  s:single;  n:integer;begin  s:=0; n:=0;  for i:=Anya to Yura do  begin s:=s+Gr[i].height; Inc(n) end;  SrRost:=s/nend;function Vysokiy(var Gr:group):string;var  i,j:name;  h:integer;begin  h:=Gr[Anya].height; j:=Anya;  for i:=Valya to Yura do  begin    if Gr[i].height>h then    begin h:=Gr[i].height; j:=i end  end;  Vysokiy:=j.ToStringend;function OdinRost(var Gr:group):boolean;var  i,j:name;  flag:boolean;begin  i:=Anya; flag:=false;  repeat    j:=Succ(i);    while (not flag) and (j<=Yura) do    begin flag:=(Gr[i].height<>Gr[j].height); Inc(j) end;    flag:=(Gr[i].height<>Gr[j].height);    if not flag then Inc(i);  until flag or (i=Yura);  OdinRost:=flagend;var  Grp:group;  i:name;  g:0..1;begin  { ввод данных }  for i:=Anya to Yura do  begin    Write(i.ToString+': укажите пол м/ж числом 0/1 ');    Readln(g);     if g=0 then Grp[i].pol:=man else Grp[i].pol:=woman;    Write(i.ToString+': укажите рост, см (140-200) ');    Readln(Grp[i].height)  end;  { вычисления }  Writeln('Средний рост равен ',SrRost(Grp):0:1);  Writeln('Наиболее высокий человек - ',Vysokiy(Grp));  If OdinRost(Grp) then Writeln('Есть минимум два человека одного роста')  else Writeln('У всех в группе разный рост');end.Тестовое решение:Anya: укажите пол м/ж числом 0/1 1Anya: укажите рост, см (140-200) 165Valya: укажите пол м/ж числом 0/1 1Valya: укажите рост, см (140-200) 170Zhenya: укажите пол м/ж числом 0/1 0Zhenya: укажите рост, см (140-200) 173Petya: укажите пол м/ж числом 0/1 0Petya: укажите рост, см (140-200) 178Sasha: укажите пол м/ж числом 0/1 0Sasha: укажите рост, см (140-200) 176Tanya: укажите пол м/ж числом 0/1 1Tanya: укажите рост, см (140-200) 170Shura: укажите пол м/ж числом 0/1 1Shura: укажите рост, см (140-200) 168Yura: укажите пол м/ж числом 0/1 0Yura: укажите рост, см (140-200) 175Средний рост равен 171.9Наиболее высокий человек - PetyaЕсть минимум два человека одного роста
    • Автор:

      thor60
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years