Enviado em 19/12/2017 - 21:25h
Quando tento algums calculos, como:program bhaskara; var a, b, c, delta, x, bn, xp, xn : real; begin write('Digite o valor de a: '); readln(a); if a = 0 then begin writeln('A não pode ser 0'); exit; end else begin writeln('Valor de a está ok'); end; write('Digite o valor de b: '); readln(b); write('Digite o valor de c: '); readln(c); writeln('Indo calcular delta'); delta := (b*b)-(4*a*c); writeln(delta:0:6); writeln('Indo calcular b negativo'); bn := (-1)*b; writeln('Indo calcular x negativo'); xn := (bn - sqrt(delta))/2*a; writeln('Indo calcular x positivo'); xp := (bn + sqrt(delta))/2*a; writeln('Duas raízes foram achadas: ', xp:0:6, ' ', xn:0:6); end.
Enviado em 20/12/2017 - 12:05h
Fiz umas mudanças no código. Expliquei as variáveis e também tirei o teste de "a = 0", pois a nunca pode ser 0, e acho provável que o usuário saiba disso.program bhaskara; var a { a letra "a" }, b{ a letra "b"}, c { a letra "c"}, delta{ o delta }, x { o valor de x }, bn{ usei para transformar o b em um número negativo }, xp{ o x pode ter dois valores, este é do x positivo }, xn { x negativo} : real; begin write('Digite o valor de a: '); readln(a); { recebe o valor de a } write('Digite o valor de b: '); readln(b); { recebe o valor de b } write('Digite o valor de c: '); readln(c); { recebe o valor de c } writeln('Indo calcular delta'); delta := (b*b)-(4*a*c); { calcula o delta } writeln(delta:0:6); { mostrei o delta só por teste } writeln('Indo calcular b negativo'); bn := (-1)*b; { aqui transforma o b em negativo para calcular o bhaskara } writeln('Indo calcular x negativo'); xn := (bn - sqrt(delta))/2*a; { calcula um dos valores do x, no caso o negativo } writeln('Indo calcular x positivo'); xp := (bn + sqrt(delta))/2*a; { calcula o valor positivo do x } writeln('Duas raízes foram achadas: ', xp:0:6, ' ', xn:0:6); end.
Frases do Mês"A Microsoft não é má. Eles só fazem sistemas operacionais realmente ruins." Linus Torvalds"Levar os homens à verdade é o maior benefício que se pode prestar aos outros. " - Santo Tomás de Aquino
Enviado em 20/12/2017 - 12:30h
Consegui resolver, o erro está em 2*a, na verdade era para ser (2*a) entre parênteses:program bhaskara; var a { constante "a" }, b{ a constante "b"}, c { a constante "c"}, delta{ o delta }, x { o valor de x }, bn{ usei para transformar o valor simétrico do b }, x1{ o primeiro x}, x2 { o segundo x} : real; begin write('Digite o valor de a: '); readln(a); { recebe o valor de a } if a = 0 then begin writeln('A não pode ser 0'); exit; end; write('Digite o valor de b: '); readln(b); { recebe o valor de b } write('Digite o valor de c: '); readln(c); { recebe o valor de c } writeln('Indo calcular delta'); delta := (b*b)-(4*a*c); { calcula o delta } writeln(delta:0:6); { mostrei o delta só por teste } writeln('Indo calcular b negativo'); bn := (-1)*b; { aqui transforma o b em negativo para calcular o bhaskara } writeln('Indo calcular x negativo'); x2 := (bn - sqrt(delta))/(2*a); { calcula um dos valores do x, no caso o negativo } writeln('Indo calcular x positivo'); x1 := (bn + sqrt(delta))/(2*a); { calcula o valor positivo do x } writeln('Duas raízes foram achadas: ', x1:0:6, ' ', x2:0:6); end.
A Microsoft não é má. Eles só fazem sistemas operacionais realmente ruins." Linus Torvalds"Levar os homens à verdade é o maior benefício que se pode prestar aos outros. " - Santo Tomás de Aquino
Enviado em 20/12/2017 - 14:53h
if delta < 0 then begin writeln('Nenhuma raíz real'); { Pois quando o delta é negativo, não haverá nenhuma raiz real, que eu saiba } exit; end;
Frases do Mês"A Microsoft não é má. Eles só fazem sistemas operacionais realmente ruins." Linus Torvalds"Levar os homens à verdade é o maior benefício que se pode prestar aos outros. " - Santo Tomás de Aquino
Enviado em 20/12/2017 - 14:58h
Acabei de testar aqui, o Pascal dá erro quando recebe raiz negativo:program teste; var raiz, testeraiz : real; begin raiz := -4; testeraiz := sqrt(raiz); writeln(testeraiz); end.
Output: Runtime error 200 at $00000000004001EF $00000000004001EF $000000000040018F
Frases do Mês"A Microsoft não é má. Eles só fazem sistemas operacionais realmente ruins." Linus Torvalds"Levar os homens à verdade é o maior benefício que se pode prestar aos outros. " - Santo Tomás de Aquino
Enviado em 20/12/2017 - 17:15h
Então, vai ter que testar e se for negativo multiplica por -1 antes de tirar a raiz, só que agora não vai poder somar ao -b pois é um número imaginário.Enviado em 20/12/2017 - 17:42h
Frases do Mês"A Microsoft não é má. Eles só fazem sistemas operacionais realmente ruins." Linus Torvalds"Levar os homens à verdade é o maior benefício que se pode prestar aos outros. " - Santo Tomás de Aquino
Enviado em 20/12/2017 - 17:58h
Consegui resolver o problema no caso do delta 0Frases do Mês"A Microsoft não é má. Eles só fazem sistemas operacionais realmente ruins." Linus Torvalds"Levar os homens à verdade é o maior benefício que se pode prestar aos outros. " - Santo Tomás de Aquino
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Como converter imagens PNG/JPEG para SVG em linha de comando
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Restaurando Fontes de Download do Hydra no Linux
Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads
Como instalar o WPS com interface e corretor ortográfico em PT-BR no Arch Linux
Jogos baixados na Central de Aplicativos mas que não abrem (0)
Configuração de rede proxmox (2)