Ir ao conteúdo
  • Cadastre-se

Problemas com função IF (pascal)


Visitante

Posts recomendados

Galera eu preciso de ajuda, eu elaborei 2 programinhas com a função IF, mas eles não estão funcionando corretamente, eles meio que "ignoram" a minha função IF.

 

2. Elaborar um programa que leia o valor do raio e da altura e qual a forma do recipiente (cônica ou cilíndrica). Calcular o seu volume.

 

Program exer_2 ;varraio,altura,formula,volume:real;Begin  write('Digite o raio ');  readln(raio);  write('Digite a altura ');  readln(altura);  write('Digite o número correspondente [1]Cônica ou [2]Cilindrica ');  readln(formula);  if formula=1 then  volume:=(3.14*raio*raio*altura)/3;  writeln('O volume da figura Cônica é:',volume);  if formula=2 then  volume:=(3.14*raio*raio*altura);  writeln('O volume da figura Cilindrica é:',volume);  if (formula<1) or (formula>2) then  writeln('ERRO número escolhido inválido');End.
 

28bfsbl.jpg

O correto seria mostrar apenas o resultado pra fórmula que eu escolhi no caso estou usando os números 1 ou 2 como referencia.

 

4. Elaborar um programa que leia os coeficientes da equação AX² + BX + C = 0 e calcule as suas raízes:

 

Program exer_4 ;vara,b,c,fbhaskara,fbhaskarap,fbhaskaran,delta:real; Begin  write('Insira o valor do a ');readln(a);write('Insira o valor do b ');readln( ;write('Insira o valor do c ');readln(c);delta:=(b* -4*a*c;if (delta < 0) thenwriteln('Solução irreal') elsedelta:=sqrt(delta);fbhaskarap:= (-b+delta)/2*a;fbhaskaran:= (-b-delta)/2*a;writeln('As raízes são: ',fbhaskarap,' e ',fbhaskaran); End.        
21axq43.jpg
O mesmo está acontecendo aqui, quando o DELTA  < 0 era pra mostrar apenas Solução irreal, e não aparecer os valores das raízes.
Link para o comentário
Compartilhar em outros sites

Olá, o que está acontencendo é que você precisa de executar 2 linhas de comando em cada comando if.

 

Mas quando usamos o IF da forma como você usou ele executa apenas uma linha, pois quando precisamos de executar mais de 1 linha de código dentro do IF, precisamos de usar o que chamamos de bloco de código. Veja a seguir.

 

IF executando apenas 1 linha:

if foruma = 1 then    volume:=(3.14*raio*raio*altura)/3;

IF executando várias linhas de código, para isso delimitamos os comandos entre um "begin e end" para que todos os comandos sejam subordinados ao IF.

 
if formula=1 thenbegin      volume:=(3.14*raio*raio*altura)/3;      writeln('O volume da figura Cônica é:',volume);end;
 
Fazendo essas alterações seu programa funciona como desejado.
 
 
Seu código com as alterações:
 
Program exer_2 ;varraio,altura,formula,volume:real;Begin  write('Digite o raio ');  readln(raio);  write('Digite a altura ');  readln(altura);  write('Digite o número correspondente [1]Cônica ou [2]Cilindrica ');  readln(formula);  if formula=1 then  begin     volume:=(3.14*raio*raio*altura)/3;     writeln('O volume da figura Cônica é:',volume);  end;  if formula=2 then  begin     volume:=(3.14*raio*raio*altura);     writeln('O volume da figura Cilindrica é:',volume);  end;  if (formula<1) or (formula>2) then      writeln('ERRO número escolhido inválido');End.
 

Grande abraço e bons estudos.

Se precisar estamos a disposição.

Gustavo

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