Ir ao conteúdo

Posts recomendados

Postado

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

  • Membro VIP
Postado

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

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!