Tome Almeida Posted January 3, 2023 at 07:52 PM Report Share #629384 Posted January 3, 2023 at 07:52 PM (edited) 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 January 4, 2023 at 12:25 AM by nunopicado Syntax Highlight Tomé Link to comment Share on other sites More sharing options...
Solution nunopicado Posted January 4, 2023 at 12:22 AM Solution Report Share #629390 Posted January 4, 2023 at 12:22 AM 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 More sharing options...
Tome Almeida Posted January 4, 2023 at 04:27 AM Author Report Share #629395 Posted January 4, 2023 at 04:27 AM 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 More sharing options...
nunopicado Posted January 4, 2023 at 08:17 AM Report Share #629396 Posted January 4, 2023 at 08:17 AM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now