Вопрос задан 15.04.2020 в 08:11.
Предмет Информатика.
Спрашивает Сачук Настя.
Помогите с программной на паскале, пожалуйста) Используя следующий фрагмент программы, опишите
перечисленные ниже функции: Type name = (Аня, Валя, Женя, Петя, Саша, Таня, Шура, Юра); information = record pol : (man, woman); height : 140..200 end; group = array [name] of information; а) функция СредРост( ГР ) определяет средний рост женщин из группы ГР; б) функция Высокий( ГР ) определяет имя самого высокого мужчины из группы ГР; в) логическая функция ОдинРост( ГР ) проверяет, есть ли в группе ГР хотя бы два человека одинакового роста.Ответы на вопрос
        Отвечает Степанова Валерия.
                
     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/n
end;
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.ToString
end;
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:=flag
end;
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 1
Anya: укажите рост, см (140-200) 165
Valya: укажите пол м/ж числом 0/1 1
Valya: укажите рост, см (140-200) 170
Zhenya: укажите пол м/ж числом 0/1 0
Zhenya: укажите рост, см (140-200) 173
Petya: укажите пол м/ж числом 0/1 0
Petya: укажите рост, см (140-200) 178
Sasha: укажите пол м/ж числом 0/1 0
Sasha: укажите рост, см (140-200) 176
Tanya: укажите пол м/ж числом 0/1 1
Tanya: укажите рост, см (140-200) 170
Shura: укажите пол м/ж числом 0/1 1
Shura: укажите рост, см (140-200) 168
Yura: укажите пол м/ж числом 0/1 0
Yura: укажите рост, см (140-200) 175
Средний рост равен 171.9
Наиболее высокий человек - Petya
Есть минимум два человека одного роста
 
                                        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/n
end;
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.ToString
end;
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:=flag
end;
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 1
Anya: укажите рост, см (140-200) 165
Valya: укажите пол м/ж числом 0/1 1
Valya: укажите рост, см (140-200) 170
Zhenya: укажите пол м/ж числом 0/1 0
Zhenya: укажите рост, см (140-200) 173
Petya: укажите пол м/ж числом 0/1 0
Petya: укажите рост, см (140-200) 178
Sasha: укажите пол м/ж числом 0/1 0
Sasha: укажите рост, см (140-200) 176
Tanya: укажите пол м/ж числом 0/1 1
Tanya: укажите рост, см (140-200) 170
Shura: укажите пол м/ж числом 0/1 1
Shura: укажите рост, см (140-200) 168
Yura: укажите пол м/ж числом 0/1 0
Yura: укажите рост, см (140-200) 175
Средний рост равен 171.9
Наиболее высокий человек - Petya
Есть минимум два человека одного роста
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
	- 
			
Математика
 - 
			
Литература
 - 
			
Алгебра
 - 
			
Русский язык
 - 
			
Геометрия
 - 
			
Английский язык
 - 
			
Химия
 - 
			
Физика
 - 
			
Биология
 - 
			
Другие предметы
 - 
			
История
 - 
			
Обществознание
 - 
			
Окружающий мир
 - 
			
География
 - 
			
Українська мова
 - 
			
Информатика
 - 
			
Українська література
 - 
			
Қазақ тiлi
 - 
			
Экономика
 - 
			
Музыка
 - 
			
Право
 - 
			
Беларуская мова
 - 
			
Французский язык
 - 
			
Немецкий язык
 - 
			
МХК
 - 
			
ОБЖ
 - 
			
Психология
 - 
			
Физкультура и спорт
 - 
			
Астрономия
 - 
			
Кыргыз тили
 - 
			
Оʻzbek tili
 
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			