Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Anderson1986

Divisão por 0 no Pascal

Recommended Posts

Estou Tentando fazer com que um programa que usa case

não permita que seja feito uma divisão por zero

O Código é o Seguinte:

Program Menu;

Uses Crt;

Var Num1, Num2:Real;

Opcao:Char;

Begin

Clrscr;

Writeln('Menu');

Writeln('[+] Adição');

Writeln('[-] Subtração');

Writeln('[*] Multiplicação');

Writeln('[/] A Divisão');

Writeln('[F] Fim');

Writeln('Digite a Opção:');

Readln(opcao);

Writeln('Digite o Primeiro Numero:');

Readln(Num1);

Writeln('Digite o Segundo Numero:');

Readln(Num2);

Case opcao of

'+':Writeln('A Adição:', Num1+Num2:0:0);

'-':Writeln('A Subtração:', Num1-Num2:0:0);

'*':Writeln('A Multiplicação ‚:', Num1*Num2:0:0);

'/':If (num1=0) Then

Writeln('NÆo se pode Dividir por 0');

Else

Writeln('A Divisão ‚:',Num1/Num2:0:0);

'F':Writeln('FIM');

Else

Writeln('Opção Inválida');

End;

Readln

End.

Eu tento Compilar Dessa Forma e Da os Seguintes Erros:

Programa Menu2.pas(28,5) Error: Label used but not defined "F"

Programa Menu2.pas(28,5) Fatal: Syntax error, "END" expected but "identifier WRITELN" found

Programa Menu2.pas(0) Fatal: Compilation aborted

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tira o ponto e vírgula antes do "else" aqui, ficando assim:


'/':If (num1=0) Then
Writeln('NÆo se pode Dividir por 0')
Else
Writeln('A Divisão ‚:',Num1/Num2:0:0);

E está faltando um ponto e vírgula aqui, ficando assim:


End;
Readln;
End.

JP

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Tira o ponto e vírgula antes do "else" aqui, ficando assim:


    '/':If (num1=0) Then
    Writeln('NÆo se pode Dividir por 0')
    Else
    Writeln('A Divisão ‚:',Num1/Num2:0:0);

    E está faltando um ponto e vírgula aqui, ficando assim:


    End;
    Readln;
    End.

    JP

    Deu certo do jeito que me falou, só que eu estou tentando fazer com que o num1 eo num2 quando digitar zero em qualquer um dos dois de a mensagem de erro

    o código ficou assim

    Program Menu;

    Uses Crt;

    Var Num1, Num2:Real;

    Opcao:Char;

    Begin

    Clrscr;

    Writeln('Menu');

    Writeln('[+] Adição');

    Writeln('[-] Subtração');

    Writeln('[*] A Multiplicação');

    Writeln('[/] DivisÆo');

    Writeln('Fim');

    Writeln('Digite a Opção:');

    Readln(opcao);

    Writeln('Digite o Primerio Numero:');

    Readln(Num1);

    Writeln('Digite o Segundo Numero:');

    Readln(Num2);

    Case opcao of

    '+':Writeln('A soma:', num1+num2:0:0);

    '-':Writeln('A Subtração:', num2-num2:0:0);

    '*':Writeln('A Multiplicação:', num1*num2:0:0);

    '/':if num1=0 and num2=0 then

    Writeln('Não se pode dividir por zero')

    Else

    Writeln('A Divisão:', num1/num2:0:0);

    'F':Writeln('Fim');

    Else

    Writeln('Opção Invalida');

    End;

    Readln;

    End.

    Dando os Seguintes erros:

    Programa Menu.pas(25,15) Error: Operation "and" not supported for types "Real" and "Real"

    Programa Menu.pas(35) Fatal: There were 1 errors compiling module, stopping

    Programa Menu.pas(0) Fatal: Compilation aborted

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Ponha as condições entre parênteses:


    '/':if (num1=0) and (num2=0) then

    Se você quer que entre no if se qualquer um dos dois seja 0, e não ambos, use OR e não AND.

    JP

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Ponha as condições entre parênteses:


    '/':if (num1=0) and (num2=0) then

    Se você quer que entre no if se qualquer um dos dois seja 0, e não ambos, use OR e não AND.

    JP

    È isso Mesmo, o Programa funcionou com OR

    Valeu Brigadao

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×