Ir ao conteúdo
  • Cadastre-se

Como corrigir esse runtime error 106 ?


SuperBond

Posts recomendados

Olá, meu objetivo é dividir um numero pelo outro. Se o resultado obtido for igual a um determinado quociente por mim digitado, o programa deverá apresentar tal quociente. Os numeros a serem divididos são sempre inteiros e o quociente deve ser real, com 11 casas decimais. Fiz o seguinte código abaixo, mas está sendo apresentado um runtime error 106. Até entendo onde está o problema:

Se eu fizer, por exemplo, 2/3 o resultado é uma dízima: 0,66666666667.

Mas digitando esse quociente, na hora do programa verificar a igualdade ( x=q ), ocorre algo que provoca esse runtime error.

Se eu fizer 1/1 e digitar quociente = 1, funciona perfeitamente e aparece 1,00000000000

Sei que o problema está entre o quociente que digito e o que o programa calcula, mas como resolver?

PROGRAM DIVIDINDO;
var
q, n1, n2: integer;
x, q: real;
begin
write('1º numero:'); readln(n1);
write('2º numero:'); readln(n2);
write('QUOCIENTE:'); readln(q);
x:= n1 / n2;
if ( x=q ) then
writeln(x:12:11);
readln;
end.

Link para o comentário
Compartilhar em outros sites

Olá!

Você declarou a variável "q" duas vezes e com tipos diferentes. Corrigindo isso, não há erro.

[COLOR=#000000][B]PROGRAM[/B][/COLOR] DIVIDINDO[COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#000000][B]uses[/B][/COLOR]
crt[COLOR=#a52a2a][B];[/B][/COLOR] [COLOR=#4682b4][I]//necessário para utilizar "readkey"[/I][/COLOR]
[COLOR=#000000][B]var[/B][/COLOR]
n1[COLOR=#a52a2a][B],[/B][/COLOR] n2[COLOR=#a52a2a][B]:[/B][/COLOR] [COLOR=#0000cd][B]integer[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
x[COLOR=#a52a2a][B],[/B][/COLOR] q[COLOR=#a52a2a][B]:[/B][/COLOR] [COLOR=#0000cd][B]real[/B][/COLOR][COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#000000][B]begin[/B][/COLOR]
[COLOR=#228b22]write[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR][COLOR=#ff4500]'1º numero:'[/COLOR][COLOR=#a52a2a][B]);[/B][/COLOR]
[COLOR=#228b22]readln[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]n1[COLOR=#a52a2a][B]);[/B][/COLOR]
[COLOR=#228b22]write[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR][COLOR=#ff4500]'2º numero:'[/COLOR][COLOR=#a52a2a][B]);[/B][/COLOR]
[COLOR=#228b22]readln[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]n2[COLOR=#a52a2a][B]);[/B][/COLOR]
[COLOR=#228b22]write[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR][COLOR=#ff4500]'QUOCIENTE:'[/COLOR][COLOR=#a52a2a][B]);[/B][/COLOR]
[COLOR=#228b22]readln[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]q[COLOR=#a52a2a][B]);[/B][/COLOR]
x [COLOR=#a52a2a][B]:=[/B][/COLOR] n1 [COLOR=#a52a2a][B]/[/B][/COLOR] n2[COLOR=#a52a2a][B];[/B][/COLOR]
[COLOR=#228b22]if[/COLOR] x [COLOR=#a52a2a][B]=[/B][/COLOR] q [COLOR=#228b22]then[/COLOR]
[COLOR=#228b22]writeln[/COLOR][COLOR=#a52a2a][B]([/B][/COLOR]x[COLOR=#a52a2a][B]:[/B][/COLOR][COLOR=#000000]12[/COLOR][COLOR=#a52a2a][B]:[/B][/COLOR][COLOR=#000000]11[/COLOR][COLOR=#a52a2a][B]);[/B][/COLOR]
readkey[COLOR=#a52a2a][B];[/B][/COLOR] [COLOR=#4682b4][I]//aguarda o usuário pressionar qualquer tecla[/I][/COLOR]
[COLOR=#000000][B]end[/B][/COLOR][COLOR=#a52a2a][B].[/B][/COLOR]

Link para o comentário
Compartilhar em outros sites

Engraçado, eu não sei como postei o código com esse erro, porque aqui no original não tem isso...

Bem, mesmo corrigindo isso não funciona como deveria, Vinicius. Continua acusando o mesmo erro. Aliás, experimentei rodar o código com as modificações que você fez e mesmo assim nada. Continuo tentando.

Tentei outra operação: Dividir 3 por 2 e digitei QUOCIENTE = 1,5. E o mesmo bendito erro apareceu.:confused::confused:

Link para o comentário
Compartilhar em outros sites

Identifiquei um problema. Foi vacilo meu. Eu estava digitando 0,66666666667. O correto é usar ponto. Um dos problemas era esse.

Mas ainda assim está tendo alguma divergência entre o QUOCIENTE que digito e o que ele calcula.

Quando faço 2 divido por 3 e digito um quociente = 0.66666666667, o programa não retorna o quociente, como era o esperado. simplesmente não faz nada, o cursor fica piscando.

Mas seu fizer 1 por 2 com q = 0.5. Aí funciona.

Link para o comentário
Compartilhar em outros sites

Fiz isso. OK, funciona pra 2 por 3 com essa dizima period., 0.666666666...

Mas aí testei fazer 13 por 14 com q = 0.9285713 ( na minha calculadora manual dá 0.928571428571..., o pascal arredonda pra 0.9285713 ). Aí o programa não faz nada de novo. Tentei jogar o Quociente exatamente igual ao que o pascal calcula (0.9285713), mas nada.

Se fosse a dizima periódica era só digitar o ultimo numero mais vezes, mas em se tratando de uma dizima não-periódica, eu não sei como resolver.

Link para o comentário
Compartilhar em outros sites

Fiz isso. OK, funciona pra 2 por 3 com essa dizima period., 0.666666666...

Mas aí testei fazer 13 por 14 com q = 0.9285713 ( na minha calculadora manual dá 0.928571428571..., o pascal arredonda pra 0.9285713 ). Aí o programa não faz nada de novo. Tentei jogar o Quociente exatamente igual ao que o pascal calcula (0.9285713), mas nada.

Se fosse a dizima periódica era só digitar o ultimo numero mais vezes, mas em se tratando de uma dizima não-periódica, eu não sei como resolver.

Olá!

O quociente 13/14 é um número racional, portanto não pode ser uma dízima não-periódica.

O resultado é:

37723756.gif

(Wolfram|Alpha)

A parte overlined é o período, o que se repete.

Testei aqui e funcionou quando digitei arredondando na 16ª casa:

71032954.gif

("]Wolfram|Alpha)

O mesmo ocorreu com 1/3.

Se quiser testar arredondando (funciona considerando 13/14 = 0.92857142857):

[color=#000000][b]PROGRAM[/b][/color] DIVIDINDO[color=#a52a2a][b];[/b][/color]
[color=#000000][b]uses[/b][/color]
crt[color=#a52a2a][b];[/b][/color] [color=#4682b4][i]// necessário para utilizar "readkey"[/i][/color]
[color=#000000][b]var[/b][/color]
n1[color=#a52a2a][b],[/b][/color] n2[color=#a52a2a][b]:[/b][/color] [color=#0000cd][b]integer[/b][/color][color=#a52a2a][b];[/b][/color]
x[color=#a52a2a][b],[/b][/color] q[color=#a52a2a][b]:[/b][/color] [color=#0000cd][b]real[/b][/color][color=#a52a2a][b];[/b][/color]

[color=#000000][b]function[/b][/color] [color=#228b22]arredondar[/color][color=#a52a2a][b]([/b][/color]numero[color=#a52a2a][b]:[/b][/color] [color=#0000cd][b]real[/b][/color][color=#a52a2a][b];[/b][/color] ncasas[color=#a52a2a][b]:[/b][/color] [color=#0000cd][b]byte[/b][/color][color=#a52a2a][b]):[/b][/color] [color=#0000cd][b]real[/b][/color][color=#a52a2a][b];[/b][/color]
[color=#000000][b]var[/b][/color]
cont[color=#a52a2a][b]:[/b][/color] [color=#0000cd][b]byte[/b][/color][color=#a52a2a][b];[/b][/color]
[color=#000000][b]begin[/b][/color]
arredondar [color=#a52a2a][b]:=[/b][/color] numero[color=#a52a2a][b];[/b][/color]
[color=#228b22]for[/color] cont [color=#a52a2a][b]:=[/b][/color] [color=#000000]1[/color] [color=#228b22]to[/color] ncasas [color=#228b22]do[/color]
arredondar [color=#a52a2a][b]:=[/b][/color] arredondar [color=#a52a2a][b]*[/b][/color] [color=#000000]10[/color][color=#a52a2a][b];[/b][/color]
arredondar [color=#a52a2a][b]:=[/b][/color] [color=#228b22]round[/color][color=#a52a2a][b]([/b][/color]arredondar[color=#a52a2a][b]);[/b][/color]
[color=#228b22]for[/color] cont [color=#a52a2a][b]:=[/b][/color] ncasas [color=#228b22]downto[/color] [color=#000000]1[/color] [color=#228b22]do[/color]
arredondar [color=#a52a2a][b]:=[/b][/color] arredondar [color=#a52a2a][b]/[/b][/color] [color=#000000]10[/color][color=#a52a2a][b];[/b][/color]
[color=#000000][b]end[/b][/color][color=#a52a2a][b];[/b][/color]

[color=#4682b4][i]//main[/i][/color]
[color=#000000][b]begin[/b][/color]
[color=#228b22]write[/color][color=#a52a2a][b]([/b][/color][color=#ff4500]'1'[/color][color=#a52a2a][b],[/b][/color] #[color=#000000]167[/color][color=#a52a2a][b],[/b][/color] [color=#ff4500]' n'[/color][color=#a52a2a][b],[/b][/color] #[color=#000000]163[/color] [color=#a52a2a][b],[/b][/color][color=#ff4500]'mero: '[/color][color=#a52a2a][b]);[/b][/color]
[color=#228b22]readln[/color][color=#a52a2a][b]([/b][/color]n1[color=#a52a2a][b]);[/b][/color]
[color=#228b22]write[/color][color=#a52a2a][b]([/b][/color][color=#ff4500]'2'[/color][color=#a52a2a][b],[/b][/color] #[color=#000000]167[/color][color=#a52a2a][b],[/b][/color] [color=#ff4500]' n'[/color][color=#a52a2a][b],[/b][/color] #[color=#000000]163[/color] [color=#a52a2a][b],[/b][/color][color=#ff4500]'mero: '[/color][color=#a52a2a][b]);[/b][/color]
[color=#228b22]readln[/color][color=#a52a2a][b]([/b][/color]n2[color=#a52a2a][b]);[/b][/color]
[color=#228b22]write[/color][color=#a52a2a][b]([/b][/color][color=#ff4500]'QUOCIENTE: '[/color][color=#a52a2a][b]);[/b][/color]
[color=#228b22]readln[/color][color=#a52a2a][b]([/b][/color]q[color=#a52a2a][b]);[/b][/color]
x [color=#a52a2a][b]:=[/b][/color] n1 [color=#a52a2a][b]/[/b][/color] n2[color=#a52a2a][b];[/b][/color]
[color=#228b22]if[/color] [color=#228b22]arredondar[/color][color=#a52a2a][b]([/b][/color]x[color=#a52a2a][b],[/b][/color] [color=#000000]11[/color][color=#a52a2a][b]) =[/b][/color] [color=#228b22]arredondar[/color][color=#a52a2a][b]([/b][/color]q[color=#a52a2a][b],[/b][/color] [color=#000000]11[/color][color=#a52a2a][b])[/b][/color] [color=#228b22]then[/color]
[color=#228b22]writeln[/color][color=#a52a2a][b]([/b][/color]x[color=#a52a2a][b]:[/b][/color][color=#000000]12[/color][color=#a52a2a][b]:[/b][/color][color=#000000]11[/color][color=#a52a2a][b]);[/b][/color]
readkey[color=#a52a2a][b];[/b][/color] [color=#4682b4][i]// aguarda o usuário pressionar qualquer tecla[/i][/color]
[color=#000000][b]end[/b][/color][color=#a52a2a][b].[/b][/color]

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!