Помощь - Поиск - Пользователи - Календарь
Полная версия: Исправьте программу.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Killer1995
Проверьте на правильность программу!Где тут ошибка в ней?Напиши где и исправте программу пожалуйста!
вот условия--------
Составить программу для определения среднего роста женщин и определения людей одинакового роста в группе.

Type name=(Anya,Valya,Genya,Petya,Sasha,Tanya,Shura,Yura);
dannye=record
pol:(male,female);
zrist:140..200;
end;
gruppa=array[name]of dannye;
var gr:gruppa;
k:name;x:real;
f1,f:text;
procedure serzrist(var x:real);
var n:name;
s:word;
begin
x:=0;s:=0;
for n:=Anya to Yura do
if gr[n].pol=female then begin
x:=x+gr[n].zrist;s:=s+1;end;
x:=x/s;end;
function odnakzrist:boolean;
var n,n1:name;zrist:140..200;
f:boolean;k1:integer;
begin for n:=Anya to Yura do
zrist:=gr[n].zrist;f:=false;k1:=0;
for n1:=Valya to Yura do
if zrist=gr[n1].zrist then begin
k1:=k1+1;f:=true;end;
odnakzrist:=f;
end;
begin
for k:=Anya to Yura do begin
if k in [Anya,Valya,Tanya]then gr[k].pol:=female
else gr[k].pol:=male;
readln(gr[k].zrist);
end;
serzrist(x);
writeln(odnakzrist,x);
end.
@nto$ka
Во первых, приведем Ваш код в порядок



type
  name = (Anya, Valya, Genya, Petya, Sasha, Tanya, Shura, Yura);
  dannye = record
    pol: (male, female);
    zrist: 140..200;
  end;
  gruppa = array[name] of dannye;

var
  gr: gruppa;
  k: name;x: real;
  f1, f: text;

procedure serzrist(var x: real);
var
  n: name;
  s: word;
begin
  x := 0;s := 0;
  for n := Anya to Yura do
    if gr[n].pol = female then 
    begin
      x := x + gr[n].zrist;
      s := s + 1;
    end;
  x := x / s; 
end;

function odnakzrist: boolean;
var
  n, n1: name;
  zrist: 140..200;
  f: boolean;k1: integer;
begin
  for n := Anya to Yura do
    zrist := gr[n].zrist;
  f := false;
  k1 := 0;
  for n1 := Valya to Yura do
    if zrist = gr[n1].zrist then 
    begin
      k1 := k1 + 1;
      f := true;
    end;
  odnakzrist := f;
end;

begin
  for k := Anya to Yura do 
  begin
    if k in [Anya, Valya, Tanya] then
        gr[k].pol := female
    else
        gr[k].pol := male;
    readln(gr[k].zrist);
  end;
  serzrist(x);
  writeln(odnakzrist, x);
end.



Теперь становится ясно, что на строке
 for n := Anya to Yura do
    zrist := gr[n].zrist; 

Ваш зрист хранит возраст Юры. Зачем Вам возраст Юры??
Получается, что вы сравниваете возраста других только с возрастом юры. Это пичаль((

Зачем, Вы используете переменную k1?? т.е. не используете??
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.