Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Alguem sabe me ajudar com esse erro?


Posts recomendados

Estou tento um erro no end final do código e não consigo resolver

program lista_de_exercícios ;
var
   exercicio, exercicio1 : string;
   num1, num2, num3, num4 : real;
   a, b, c, d : char;
   
begin
  writeln('');
  writeln('=========================================');
  writeln('            lista de exercicios          ');
  writeln('=========================================');
  writeln('');
  
  writeln('');
  writeln('=========================================');
  writeln('             1_exercicio 1               ');
  writeln('             2_exercicio 3               ');
  writeln('             3_exercicio 5               ');
  writeln('             4_sair                      ');
  writeln('=========================================');
  writeln('');
  
  repeat
  
    writeln('informe o exercicio (1, 2 ou 3 - press 4 para finalizar o programa): ');
  read(exercicio);
  if(exercicio = '1') then
  begin
    exercicio1 := ('qual dos itens e um dispositivo de entrada?');
  writeln('');
  writeln('=========================================');
  writeln('              a - teclado                ');
  writeln('              b - monitor                ');
  writeln('              c - caixa de som           ');
  writeln('              d - impressora             ');
  writeln('=========================================');
  writeln('digite a resposta (a, b, c ou d): ');
  read(resposta);
  if(resposta = 'a') then
  begin
  writeln('resposta correta!');
  end else
    if(resposta = 'b') then
    begin
    writeln('resposta incorreta');
    end;
begin
    if(resposta = 'c') then
    begin
    writeln('resposta incorreta');
    end;
  begin
    if(resposta = 'd') then
    writeln('resposta incorreta');
    end.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@HUNTER020, olá.

 

1) não use read(), use apenas readln();

 

2) faltou declarar a variável resposta;

 

3) em 2 momentos, em vez de else, usou begin;

 

4) faltou o until do repeat.

 

program lista_de_exercicios;
var
  exercicio, exercicio1  : string;
  num1, num2, num3, num4 : real;
  a, b, c, d : char;
  resposta :string; //faltou declarar
BEGIN
writeln('');
writeln('=========================================');
writeln('            lista de exercicios          ');
writeln('=========================================');
writeln('');
writeln('');
writeln('=========================================');
writeln('             1_exercicio 1               ');
writeln('             2_exercicio 3               ');
writeln('             3_exercicio 5               ');
writeln('             4_sair                      ');
writeln('=========================================');
writeln('');
repeat
  writeln('informe o exercicio (1, 2 ou 3 - press 4 para finalizar o programa): ');
  readln(exercicio);
  if (exercicio = '1') then
    begin
    exercicio1 := ('qual dos itens e um dispositivo de entrada?');
    writeln('');
    writeln('=========================================');
    writeln('              a - teclado                ');
    writeln('              b - monitor                ');
    writeln('              c - caixa de som           ');
    writeln('              d - impressora             ');
    writeln('=========================================');
    writeln('digite a resposta (a, b, c ou d): ');
    readln(resposta);
    if (resposta = 'a') then
      begin
      writeln('resposta correta!');
      end
    else
      if (resposta = 'b') then
        begin
        writeln('resposta incorreta');
        end
    //begin
    else
      if (resposta = 'c') then
        begin
        writeln('resposta incorreta');
        end
    //begin
    else
      if (resposta = 'd') then
        writeln('resposta incorreta');
    //end.
    end;
until exercicio = '4'; //faltou 
END.

 

Link para o comentário
Compartilhar em outros sites

Estou utilizando o pascalzin

  
 

  writeln('informe o exercicio (1, 2 ou 3 - press 4 para finalizar o programa): ');
  readln(exercicio);
  if(exercicio = '1') then
  begin
    exercicio1 := ('qual dos itens e um dispositivo de entrada?');
  writeln('');
  writeln('=========================================');
  writeln('              a - teclado                ');
  writeln('              b - monitor                ');
  writeln('              c - caixa de som           ');
  writeln('              d - impressora             ');
  writeln('=========================================');
  writeln('digite a resposta (a, b, c ou d): ');
  readln(resposta);
  if(resposta = 'a') then
  begin
  writeln('resposta correta!');
  end else
    if(resposta = 'b') then
    else
    writeln('resposta incorreta');
    end else
    if(resposta = 'c') then
    else
    writeln('resposta incorreta');
    if(resposta = 'd') then
    writeln('resposta incorreta');
    end.
adicionado 1 minuto depois

O objetivo final era esse:


2) Elabore um algoritmo que monte um menu com as seguintes opções:
1 – Exercício 1
2 – Exercício 3
3 – Exercício 5
4 – Fim
Se o usuário executar a opção 1, o algoritmo deve executar o exercício 1 desta lista.
Se o usuário executar a opção 2, o algoritmo deve executar o exercício 3 desta lista.
Se o usuário executar a opção 3, o algoritmo deve executar o exercício 5 desta lista.
Se o usuário executar a opção 4, o algoritmo deve finalizar a execução do algoritmo com a mensagem, “fim de execução - tudo de bom.”.
Caso seja informado um número diferente de 1, 2 3 e 4, o algoritmo deve emitir a mensagem de opção inválida e voltar a pedir uma opção de menu novamente.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Está faltando parte do código. Preciso do código completo. Pressione Ctrl+A + Ctrl+C no PascalZim.

 

 

Para postar um código no Fórum, clique antes no botão <>.

 

tag code.PNG

 

 

 

 

Selecione Objective C, como na imagem abaixo:

 

tag code2.jpg

 

Cola o código e insere.

 

No aguardo.

 

 

Link para o comentário
Compartilhar em outros sites

@simon viegas @simon viegas

program lista_de_exercicios ;
var
exercicio, exercicio1 : string;
num1, num2, num3, num4 : real;
a, b, c, d : char;
resposta : string;

begin
  writeln('');
  writeln('=========================================');
  writeln('            lista de exercicios          ');
  writeln('=========================================');
  writeln('');
  
  writeln('');
  writeln('=========================================');
  writeln('             1_exercicio 1               ');
  writeln('             2_exercicio 3               ');
  writeln('             3_exercicio 5               ');
  writeln('             4_sair                      ');
  writeln('=========================================');
  writeln('');
  
  writeln('informe o exercicio (1, 2 ou 3 - press 4 para finalizar o programa): ');
  readln(exercicio);
  if(exercicio = '1') then
  begin
    exercicio1 := ('qual dos itens e um dispositivo de entrada?');
    writeln('');
    writeln('=========================================');
    writeln('              a - teclado                ');
    writeln('              b - monitor                ');
    writeln('              c - caixa de som           ');
    writeln('              d - impressora             ');
    writeln('=========================================');
    writeln('digite a resposta (a, b, c ou d): ');
    readln(resposta);
    if(resposta = 'a') then
    begin
      writeln('resposta correta!');
    end else
    if(resposta = 'b') then
    else
    writeln('resposta incorreta');
  end else
  if(resposta = 'c') then
  else
  writeln('resposta incorreta');
  if(resposta = 'd') then
  writeln('resposta incorreta');
end.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
agora, HUNTER020 disse:

@Simon Viegas no final do código?

 

Não. repeat/until é uma estrutura de repetição. Você colocar dentro do laço de repetição, o trecho que você quer que repita...

 

No caso, coloque o repeat logo após o begin principal e o until antes do end.

 

obs.: lembre-se que você precisa colocar a condição de parada no until.

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Segue um esboço:

program lista_de_exercicios ;
var
  menu, exercicio1 : string;
  num1, num2, num3, num4 : real;
  a, b, c, d : char;
  resposta : string;

begin
repeat
  writeln('');
  writeln('=========================================');
  writeln('            lista de exercicios          ');
  writeln('=========================================');
  writeln('');  
  writeln('');
  writeln('=========================================');
  writeln('             1_exercicio 1               ');
  writeln('             2_exercicio 3               ');
  writeln('             3_exercicio 5               ');
  writeln('             4_sair                      ');
  writeln('========================================');
  writeln('');
  writeln('informe o exercicio (1, 2 ou 3 - press 4 para finalizar o programa): ');
  readln(menu);
  if (menu = '1') then
    begin
    exercicio1 := ('qual dos itens e um dispositivo de entrada?');
    writeln('');
    writeln('=========================================');
    writeln('              a - teclado                ');
    writeln('              b - monitor                ');
    writeln('              c - caixa de som           ');
    writeln('              d - impressora             ');
    writeln('=========================================');
    writeln('digite a resposta (a, b, c ou d): ');
    readln(resposta);
    if(resposta = 'a') then
      writeln('resposta correta!')
    else
      if(resposta = 'b') then
        writeln('resposta incorreta')
      else
        if(resposta = 'c') then
          writeln('resposta incorreta')
        else
          if(resposta = 'd') then
            writeln('resposta incorreta')
    end;
until menu = '4';
end.

 

Compare com o seu código e veja o que mudou.  Qualquer dúvida é só perguntar.

 

 

Aí, agora perceba que só existe uma resposta correta, logo, "se resposta igual a 'a', então exiba resposta correta, senão, exiba resposta errada".... ou seja, não precisa dos outros if para verificar se foi 'b', 'c' e 'd', entende?

Altere o código e corrija isso.


No aguardo.

 

 

 

adicionado 9 minutos depois

Outra coisa: acho que não fica lega iniciar uma frase com letra minúscula. Ex.:

 

Em vez de:

3 horas atrás, HUNTER020 disse:

writeln('            lista de exercicios          ');

 

Usar:

writeln('            Lista de exercicios          ');

 

Ou nesse caso como é um título do menu, poderia deixar tudo em maiúsculo.

 

writeln('            LISTA DE EXERCICIOS          ');

 

 

E a lista do menu:

  writeln('=========================================');
  writeln('             1 – Exercício 1             ');
  writeln('             2 – Exercício 3             ');
  writeln('             3 – Exercício 5             ');
  writeln('             4 – Fim                     ');
  writeln('=========================================');

 

 

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

@simon viegas

program lista_de_exercicios ;
var
exercicio, exercicio1 : string;
num1, num2, num3, num4 : real;
a, b, c, d : char;
resposta : string;
cont : string;
begin 
 
  repeat
 
  writeln('');
  writeln('=======================================================================');
  writeln('                             lista de exercicios                       ');
  writeln('=======================================================================');
  writeln('');
  
  writeln('');
  writeln('=======================================================================');
  writeln('                                1_exercicio 1                          ');
  writeln('                                2_exercicio 3                          ');
  writeln('                                3_exercicio 5                          ');
  writeln('                                   4_sair                              ');
  writeln('=======================================================================');
  writeln('');
  
  writeln('informe o exercicio (1, 2 ou 3 - press 4 para finalizar o programa): ');
  readln(exercicio);
  if(exercicio = '1') then
  begin
    exercicio1 := ('qual dos itens e um dispositivo de entrada?');
    writeln('');
    writeln('=========================================');
    writeln('              a - teclado                ');
    writeln('              b - monitor                ');
    writeln('              c - caixa de som           ');
    writeln('              d - impressora             ');
    writeln('=========================================');
    writeln('digite a resposta (a, b, c ou d): ');
    readln(resposta);
    if(resposta = 'a') then
    begin
      writeln('resposta correta!');
    end else
    if(resposta = 'b, c, d') then
    else
    writeln('resposta incorreta');
  end;
  writeln('deseja realizar outro exercício? (y/4): ');
  readln(cont);
  
  until(upcase(cont) = '4');
  
  end.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

1#

Para que isso?

 

2 minutos atrás, HUNTER020 disse:

a, b, c, d : char;

 

Basta remover...

 

 

 

2#

3 minutos atrás, HUNTER020 disse:

until(upcase(cont) = '4');

 

Por quê a variável se chamar cont?

Para quê UpCase()?

 

De qualquer forma... retiro o trecho:

6 minutos atrás, HUNTER020 disse:

  writeln('deseja realizar outro exercício? (y/4): ');
  readln(cont);

 

Pois quem controla o laço de repetição é as opções do menu.

 

adicionado 1 minuto depois

*o until vai usar a variável da opção do menu mesmo.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
1 minuto atrás, HUNTER020 disse:

@Simon Viegas @Simon Viegaswriteln('deseja realizar outro exercício? (y/4): '); Essa eu coloquei pra pessoa saber qual tecla utilizar para permanecer ou sair do programa 

 

Isso já tem no menu. Não precisa. O programa inicia; aparece o menu; O usuário escolhe um exercício (ou sai, é claro); responde a pergunta (que por sinal não está aparecendo); tem o resultado da resposta; e aí volta para o menu principal novamente. Esse é fluxo

Link para o comentário
Compartilhar em outros sites

program lista_de_exercicios ;
var
exercicio, exercicio1 : string;
num1, num2, num3, num4 : real;

resposta : string;
cont : string;
begin 
 
  repeat
 
  writeln('');
  writeln('===========================================================================================');
  writeln('                                      lista de exercicios                                  ');
  writeln('===========================================================================================');
  writeln('');
  
  writeln('');
  writeln('================================================================================');
  writeln('                                         1_exercicio 1                          ');
  writeln('                                         2_exercicio 3                          ');
  writeln('                                         3_exercicio 5                          ');
  writeln('                                            4_sair                              ');
  writeln('================================================================================');
  writeln('');
  
  writeln('informe o exercicio (1, 2 ou 3 - press 4 para finalizar o programa): ');
  readln(exercicio);
  if(exercicio = '1') then
  begin
    writeln('qual dos itens e um dispositivo de entrada?');
    writeln('');
    writeln('==============================================================================');
    writeln('                                      a - teclado                             ');
    writeln('                                      b - monitor                             ');
    writeln('                                      c - caixa de som                        ');
    writeln('                                      d - impressora                          ');
    writeln('==============================================================================');
    writeln('digite a resposta (a, b, c ou d): ');
    readln(resposta);
    if(resposta = 'a') then
    begin
      writeln('resposta correta teclado!');
    end else
    if(resposta = 'b, c, d') then
    else
    writeln('resposta incorreta');
  end;
  readln(cont);
  
  until((cont) = '4');
  
  end.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

1#
Remova a variável cont do programa. Não tem algo a ver com o código. No until deixe a variável exercicio;

 

 

2#

Muda o tipo da variável exercicio e a variável resposta para char, em vez de string.

 

 

3#

Remova as variáveis num1, num2, num3, num4. Não está utilizando para algo.

 

 

4#

Inicie frases com letras maiúsculas! Tudo em minúsculo fica muito estranho.

 

 

5#

Para resposta incorreta NÃO precisa de if.

adicionado 1 minuto depois

Fica assim:

    if (resposta = 'a') then
      writeln('Resposta correta!')
    else
      writeln('Resposta incorreta');

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Falta também fazer:

 

6#

2 horas atrás, HUNTER020 disse:

Se o usuário executar a opção 4, o algoritmo deve finalizar a execução do algoritmo com a mensagem, “fim de execução - tudo de bom.”.

 

 

7#

2 horas atrás, HUNTER020 disse:

Caso seja informado um número diferente de 1, 2 3 e 4, o algoritmo deve emitir a mensagem de opção inválida e voltar a pedir uma opção de menu novamente.

 

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!