Ir para conteúdo
Fórum Script Brasil
  • 0

Construa uma função que exiba um menu


Mr. Davi

Pergunta

Olá faço curso a distância de Análise de Sistemas. Na matéria de Estruturas de dados surgiu um exemplo dado no material on-line que exibia o seguinte código fonte:

#include <iostream>
using namespace std;
void menu()
{
  system ("cls");
  cout<<"\nMenu\n";
  cout<<"\n1-Pilha";
  cout<<"\n2-Fila";
  cout<<"\n3-Lista";  
  cout<<"\n4-Arvore";
  cout<<"\n5-Grafo";  
  cout<<"\n6-Sair";
  cout<<"\nOpcao: ";    
}
int main()
{
    int op;
    do
    {
        menu();
        cin>> op
        switch (op)
        {
            case 1: cout<<"\nMetodo de acesso: LIFO\n";
            break;
            case 2: cout<<"\nMetodo de acesso: FIFO\n";
            break;
            case 3: cout<<"\nMetodo de acesso: Lista\n";
            break;
            case 4: cout<<"\nMetodo de acesso: Arvore\n";
            break;
            case 5: cout<<"\nMetodo de acesso: Grafo\n";
            break;
            case 6: cout<<"\nEstudar\n";
            break;
            default: cout<<"\nOpção Invalida\n";
        }
        System ("pause");
    }
    while (op!=6);
    return 0;
    }

Mas da erro na compilação, logo na linha 5 e depois na 7 e vai até a 13. Qual o problema desse código?

Alguém pode me ajudar?

Valeu

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

a função sytem é com s minúscula, C++ é "case sensitive", ou seja que distingue entre maiúsculas e minúsculas, para ele System é diferente de system. Ademais você precisa incluir cstdlib ou windows.h(só em sistemas linux). Na linha 38 esta como maiúscula.

Também falta ponto e virgula na linha 21 do seu código.

Sobre o problema que você diz que "...depois na 7 e vai até a 13.", isso é normal, quando você tem um erro em uma linha o mais normal é que as seguintes linhas estejam marcando erro, faça caso antes a primeira linha, consertando ela o resto deixa de marcar erro.

Um truque para identificar erros é que as vezes o compilador marca o erro em uma linha a qual você não vê nenhum erro, porem ele bota algo como "before algo" ou seja "antes de algo", um cout um switch(geralmente a primeira palavra da linha), e as vezes o que vem antes está na linha anterior, já que para C++ não existe o salto de linha, para c++ tanto faz você fazer

cout << "Alô"; cout << "mundo";

que

cout << "Alô";
cout << "mundo";

... o anterior(before) de  cout << "mundo"; sempre será cout << "Alô";, esteja ele na mesma linha ou na linha anterior, não lhe importa a c++ os saltos de linha, então como falei o truque é si não ver erro na mesma linha olhe uma linha atrás. Por isso existe o ponto e virgula, si você esquecer de colocar o ponto e virgula depois do cout << "Alô", iria fazer mais sentido si fosse cout << "Alô" cout << "mundo"(falta ponto e virgula depois de "Alô");, nesse caso ele ia dizer que falta ponto e coma antes(before) do segundo cou, isso tem sentido, o compilador iria marcar o erro na mesma linha, porem deixa de ter sentido si ambos estiver em linhas separadas e ele vai marcar o erro na seguinte linha com a palavra before, porém como falei para C/C++ é a mesma coisa estar junto que separado, porque o ponto e virgula é o que indica que acabamos uma instrução, isso sim que não pode faltar. Podemos até escrever o programa integramente em uma só linha, mas não devemos esquecer o ponto e virgula logo depois de cada instrução. ;)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...