Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Erro tipo de variáveis


Posts recomendados

Fala galera, sou iniciante no delphi e tenho que fazer um programa que calcule a moda, media, e mediana. Na hora de fazer a mediana estou com um erro de tipo de variáveis incompatíveis porém as variáveis são do mesmo tipo, e tentei de várias formas, se alguem puder me ajudar, segue o código e a foto do erro.

 

    procedure CalculoMedia(cont: integer);
    procedure CalculoModa(cont: integer);
    procedure CalculoMediana(cont: integer);

var
  Form1: TForm1;
  vet: array [1..100] of real;  // DECLARAÇÃO VETOR QUE RECEBE OS VALORES
  moda,media,mediana:real;
  aux,aux2,aux3:real;
  i,j:integer;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

i:=i+1;
vet[i]:=StrtoFloat(Edit1.Text); // EDIT1
memo1.Lines.Add(FloatToStr(vet[i])); //ADICIONANDO Nº DIGITADO AO MEMO
CalculoMedia(i); // CHAMANDO A FUNÇÃO CALCULO MEDIA
Edit1.Clear;
Edit1.SetFocus;


end;

procedure TForm1.CalculoMedia(cont: integer);
begin

  aux:=aux+vet[cont];
  media:=aux/cont;
  Label4.Caption:=FloatToStr(media);

end;

procedure TForm1.CalculoMediana(cont: integer);
begin

  for i:=1 to cont do  //PRIMEIRO FOR
  begin
    for j:=1 to cont do  //SEGUNDO FOR
      begin
        if vet[i]<vet[j] then
          aux:=vet[i];
          vet[i]:=vet[j];
          vet[j]:=aux;
      end;//FIM PRIMEIRO FOR
  end;//FIM SEGUNDO FOR

  if ((cont mod 2)=0) then
    begin
      aux2:=cont/2;
      mediana := vet[aux2];
      Label6.Caption:=FloatToStr(mediana);
    end
    else
      begin
        mediana := (vet[cont/2-1]+vet[cont/2])/2;
        Label6.Caption:=FloatToStr(mediana);
      end;
end;

 

erro.PNG

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Quais são as linhas 88 e 93? tem verificar o que tem nelas...

 

Mas acho que já tem um erro aqui:

mediana := (vet[cont/2-1]+vet[cont/2])/2;

As coordenadas do vetor são do tipo ShortInt ("integer"), mas essa coordenada que está usando é um quociente, ou seja, vai ser um Extended ("real"), pois inteiro/inteiro=real. Supostamente não pode usar um valor real para algo que só comporta inteiros.

 

Para resolver isso, poderia usar o valor arredondado.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...