Ir ao conteúdo
  • Cadastre-se

Divdão no Pascal


brunoefa

Posts recomendados

Eu estou com um problema para fazer um divisão em pascal. Eu sei que é uma pergunta boba mas eu sou leigo no assunto então lá vai

program divisão;

var

int1, int2: real;

begin

...

int1:=( int2 mod(16));

...

end.

aparece a seguinte mensagem:

Erro sintático os tipos de dados não são compátíveis;

Eu pensei que podia ser feito divisões do tipo (mod) com números reais...

se alguém souber qual é o meu erro e puder me ajudar obrigado.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Existem números inteiros que são declarados como integer, word, dword, cardinal, byte, etc) e existem os números reais ou de ponto flutuante, como por exemplo real, double, single, extended, etc.

No caso da divisão existem operadores para cada um dos tipos.

você usou números reais com um operador para inteiros. E na verdade é o operador errado (mod retorna o resto da divisão de dois números inteiros, p.ex: 5 mod 3 = 2).

Então para números de reais você deve usar o bom e velho conhecido operador "/".

Já quando você vai trabalhar com números inteiros você pode até usar esse mesmo operador, porém o resultado é um número real e se você for guardar em uma variável que é um número inteiro, terá o mesmo tipo de erro. Nesse caso você pode usar as funções Trunc e Round para truncar a divisão ou arredondar para o número inteiro mais próximo.

O operador de divisão para números inteiros é o "div".

Sugiro uma lida nessa apostila aqui: http://www.marcocantu.com/epascal/English/default.htm

Apenas o início dele foi traduzido para o português: http://www.geocities.com/odin_wan_kenobi/pascal_essencial/

Se ajudar foi traduzido para o espanhol também: http://www.marcocantu.com/epascal/Spanish/default.htm

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Postado Originalmente por brunoefa@10 out 2004, 14:11

Amigo você me ajudou muito e esclareceu quase todas as minhas dúvida, onegócio é que eu preciso de fazer uma divião com o dado do tipo real que me retorne o resto desta divisão será que tem alguma forma?

Se o resultado é com um número real, não faz sentido em falar no resto. Existe sim a parte não inteira (fracionária) do resultado.

Esse valor você pode obter com a função Frac.

Alias, esqueci de perguntar.

Int1 e int2 são números inteiros (2, 5, 8, 101, etc ) ou números reais ( 3.1416, 2.7183, etc.)?

Se são números inteiros, declare eles como integer. Se são realmente números reais, porque você perguntou sobre o resto da divisão?

Se quiser fazer algo análogo ao resto do que você postou lá no primeiro post, você apenas precisa pegar a parte fracionária de multiplicar ela pelo valor usado como divisor:

 int := Frac( int2 / 16 ) * 16;

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!