Jump to content

Erro no Case


Tome Almeida
Go to solution Solved by nunopicado,

Recommended Posts

Eu estou a tentar fazer um menú para executar uns exercícios mas quando faço case está me a dar erro e não sei porque.

Vou citar o código em questão.

Dá erro onde inseri o comentário.

Se alguém me conseguisse ajudar agradecia!

Program MenuFicha4 ;

    label inicio;
    var seccao:integer;
    var labelseccao:char;
    var seccao1:real;
    var a:real;
    var b:real;
    var c,d,e:real;
    
    
    const pi = 3.1416;
    
Begin

    textcolor(white);
    
    inicio:
    clrscr;
    
    writeln('********************************************');
    writeln('*                                                                *');
    writeln('*   Seja bem-vindo ao menú da Ficha 4!  *');
    writeln('*                                                                *');
    writeln('********************************************');                                                    
    writeln();
    writeln();
    writeln();
    writeln('A ficha 4 está dividida em 3 secções:');
    writeln();
    writeln();
    writeln('-> Secção 1');
    writeln();
    writeln('-> Secção 2');
    writeln();
    writeln('-> Secção 3');
    writeln();
    writeln();
    writeln('Insira a secção que deseja abrir');
    readln(seccao);
    
      clrscr;
        
            case seccao of
            
                1: writeln('Selecionou a secção 1!');
                    writeln();
                    writeln();
                    writeln();
                    writeln(' 1.1  -> Área do quadrado              ');
                    writeln(' 1.2  -> Perímetro da cirncunferência  ');
                    writeln(' 1.3  -> Gasolina gasta                ');
                    writeln(' 1.4  -> Latas de tinta                ');
                    writeln(' 1.5  -> Hipotenusa do triângulo       ');
                    writeln(' 1.6  -> Tempo gasto                   ');
                    writeln(' 1.7  -> Conversão para polegadas      ');
                    writeln(' 1.8  -> Conversão para Fahrenheit     ');
                    writeln(' 1.9  -> Forrar com a carpete          ');
                    writeln(' 1.10 -> Distância entre dois pontos   ');
                    writeln();
                    writeln();
                    writeln('Insira o exercício que deseja executar!');
                          readln(seccao1);
                      
                          
                                if(seccao1='1.1')then
                               
                                  writeln('Insira os lados do quadrado');
                                                readln(a);
    
                                                    clrscr;
    
                                    writeln('A área do quadrado é ',(a*a):0:2);
                                            
                                                readkey; 
                                                
                                if(seccao1='1.2')then
                                    
                                    writeln('Insira o raio da circunferência');
                                                readln(b);
    
                                                    clrscr;
    
                                    writeln('O perímetro da circunferência é ',(2*pi*b):0:2);
    
                                                readkey; 
                                                
                                if(seccao1='1.3')then
                                 
                                     writeln('Indica a distância percorrida em km e os litros de gasolina gastos');
                                                readln(c,e);
    
                                                    d:=c/e;
                                                        
                                                        clrscr;
    
                                     writeln('Fez uma média de ',d:0:1 ,' litros por kilómetro!');
    
                                                readkey;
                                                
                            
                  
                
                2:writeln('2');
                
                3:writeln('3');
                
                    else
                    
                        writeln('A opção não é válida');
                        writeln();
                        writeln('Deseja voltar a escolher? S|N');
                            readln(labelseccao);
                            
                                if(labelseccao='S') or (labelseccao='s')then
                                    goto inicio
                                        else
                                            writeln('Prima qualquer tecla para encerrar!');
                                            
            end;
                                    
     readkey;
    
End.
Edited by nunopicado
Syntax Highlight

Tomé

Link to comment
Share on other sites

  • Solution

Tens de colocar o código de cada opção do case dentro de um bloco begin...end, sempre que há mais do que um comando, como é o caso.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Em 04/01/2023 às 00:22, nunopicado disse:

Tens de colocar o código de cada opção do case dentro de um bloco begin...end, sempre que há mais do que um comando, como é o caso.

Tem razão, esqueci-me completamente obrigado.

Sabe dizer me se é possível ter um writeln e um readln na mesma linha. Por exemplo:

writeln('> '),readln

Para o output ficar assim:

> (o que fosse para escrever)

Tomé

Link to comment
Share on other sites

Podes ter quantos comandos quiseres na mesma linha, sem problemas, mas não é isso que vai afetar o output.

O que queres é usar o write em vez do writeln.

A diferença entre ambos é exatamente que o writeln coloca uma mudança de linha no final.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.