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

Inserir Menu


Andre Justulino

Pergunta

Caros, bom dia!

Estou com dificuldade em criar um menu para chamar minhas funções abaixo:

O que devo fazer?

1 - inserir

2 - Localizar

3 - Exibir

4  - Remover

5 - Sair

 

 

#include<iostream>
#include<cstring>
# define tamanho 5
using namespace std;


int inserirlistaseq (int lista[],int tam, int &quant,int valor){
if (quant ==tam)
return 0;
lista[quant]=valor;
quant = quant+1;
return 1;
}

void listarlista (int lista[],int quant){
int i;

for(i=0;i<quant;i++){
cout<<lista<<";";
}
}


int buscarlistaseq (int lista[],int quant,int valor){
int i;
for(i=0;i<quant;i++){
if(lista==valor)
return i;
}
return -1;
}

int removerlistaseq (int lista[],int &quant,int valor){
int resultado,i;

resultado = buscarlistaseq (lista, quant,valor);
if(resultado ==-1)
return -1;

for (i=resultado;i<quant-1;i++){
lista = lista[i+1];
}
quant = quant-1;
return resultado;
}

int main (){
int dados [tamanho];
int quantidade =0;
int resultado, novovalor;

}

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá!

 

Bom não sei se entendi bem a sua duvida, você quer criar um menu para chamar uma função desejada?

 

Bom se é isso, você pode tentar criar uma função chamada menu do tipo void, e dentro dela coloque uma função para printar as opções disponiveis, normalmente um numero para cada opção, e uma função para que o usuário entre com a opção desejada.

 

A opção desejada vai ser avaliada talvez por um switch, onde cada case vai ser uma das funções que será chamada.

 

Ao final de execução de qualquer uma das funções, você deve chamar novamente a função menu, para caso você queira realizar alguma outra tarefa, vou colocar um exemplo em C, já que sou inciante na linguagem e não sei nada de C++!

 

Ex:

 

void menu ( void )

      {

          int opcao = 0;

 

          printf ( “ 1 – inserir ” );

          printf ( “ 2 – buscar ” );

 

          scanf ( “%d”, &opcao );

 

          switch ( opcao )

                  {

                      case 1: inserir ( a , b , c , d );

                             break;

                      . . . . .

                      case 5: exit();

                 }

       }

 

 

int inserirlistaseq ( int lista[], int tam, int &quant, int valor )

      {

            . . .

            menu()

      }

 

e dentro do main()

 

int main()

   {

      menu();

      return (0);

   }

 

Bom esse é a minha opinião e o que consigo fazer em C, não sei se em C++ se recomenda fazer de forma diferente . . .

 

Ubuntu 14.04  GCC 4.8  CodeBlocks 13.12

 

Espero Ter Ajudado ! ! !

Editado por Felipe222
Link para o comentário
Compartilhar em outros sites

  • 0

Felipe, boa noite!

Muito obrigado pela ajuda, fiz o que voce falou mais ao tentar executar n'ao roda

#include<iostream>
#include<cstring>
# define tamanho 5
using namespace std;

int main(){
    
    while(1){
        cout << "===========MENU==========" << endl;
        cout << "1 - Inserir" << endl;
        cout << "2 - Listar" << endl;
        cout << "3 - Buscar" << endl;
        cout << "4 - Remover" << endl;
        cout << "Introduza a opção: " << endl;
        int op;
        cin >> op;
        switch(op){
        case 1:
        {
            inserirlistaseq();
            break;
        }
        
        case 2:
        {
            
            listarlista();
            break;
        }
        
        case 3:
        {
            buscarlistaseq();
            break;
        }
        
        case 4:
        {
            
            removerlistaseq();
            break;
        }
        
        case 5:
        {
         exit(1);    
        }
        
        default:
            {
              break;
            }
        }
    }
    return 0;
}


int inserirlistaseq (int lista[],int tam, int &quant,int valor){
if (quant ==tam)
return 0;
lista[quant]=valor;
quant = quant+1;
return 1;
}

void listarlista (int lista[],int quant){
int i;

for(i=0;i<quant;i++){
cout<<lista<<";";
}
}


int buscarlistaseq (int lista[],int quant,int valor){
int i;
for(i=0;i<quant;i++){
if(lista==valor)
return i;
}
return -1;
}

int removerlistaseq (int lista[],int &quant,int valor){
int resultado,i;

resultado = buscarlistaseq (lista, quant,valor);
if(resultado ==-1)
return -1;

for (i=resultado;i<quant-1;i++){
lista = lista[i+1];
}
quant = quant-1;
return resultado;
}

int main (){
int dados [tamanho];
int quantidade =0;
int resultado, novovalor;

}


 

Link para o comentário
Compartilhar em outros sites

  • 0

Olá!

 

Desculpe a demora para a resposta, ontem ( 16 ) fiquei o dia inteiro sem conexão depois que a fonte de alimentação do modem DSL queimou, e como já diz a Lei de Murphy, " tudo que pode dar errado, vai dar " ainda por cima ontem foi feriado na cidade ( Petropolis ), então nem pensar em sair para comprar outra . . .

 

Bom, dei uma compilada aqui, e rapidamente já surgiram alguns erros e alertas, a não ser que voce já os tenha solucionado, volto mais tarde com alguma dica!

 

 

Editado por Felipe222
Link para o comentário
Compartilhar em outros sites

  • 0

Olá!

 

Bom aqui esta a minha analise básica do seu código . . .

 

- |6|error: ‘int main()’ previously defined here – esse erro está relacionado pelo fato de existirem 2 main(), no seu programa

 

- Os alertas seguintes estão relacionados ao fato de que você declarou, mas não utilizou as variáveis indicadas nos alertas:

 

|100|warning: unused variable ‘dados’ [-Wunused-variable]|

 

|101|warning: unused variable ‘quantidade’ [-Wunused-variable]|

 

|102|warning: unused variable ‘resultado’ [-Wunused-variable]|

 

|102|warning: unused variable ‘novovalor’ [-Wunused-variable]|

 

- os erros seguintes muito provavelmente se devem ao fato de que, ou você não declarou os protótipos de suas funções ou tais funções não foram declaradas, neste caso quando você for chamar uma função que precise receber algum argumento ( parâmetro ) você deve passar tais parâmetros quando chama tal função:

 

|20|error: ‘inserirlistaseq’ was not declared in this scope|

|27|error: ‘listarlista’ was not declared in this scope|

|33|error: ‘buscarlistaseq’ was not declared in this scope|

|40|error: ‘removerlistaseq’ was not declared in this scope|

|46|error: ‘exit’ was not declared in this scope|

 

Este é + ou - o protótipo da sua função:

 

int inserirlistaseq ( int lista[], int , int , int );

 

Esta é a forma como você deve chamar e passar argumentos ( parâmetros ) para a função desejada:

 

switch ( op )

{

case 1: inserirlistaseq ( lista, tam, quant, valor );

break;

{

 

- |96|error: ISO C++ forbids comparison between pointer and integer [-fpermissive]| - se não me engano, esse erro está relacionado ao fato de que na linguagem C++ você não pode fazer a comparação direta entre um inteiro e um ponteiro, neste caso só faltou você indicar o índice do vetor que você deseja acessar.

 

Ex:

if ( lista [ x ] == valor )

 

- |118|error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]| - aqui é algo parecido ao error anterior, lista é um vetor e você está tentando atribuir um valor do índice do próprio vetor, ao vetor em si, quando o correto é indicar o índice do vetor que você deseja acessar.

 

Ex:

lista [ x ] = lista [ i + 1 ];

 

- e você não fez exatamente o que lhe sugerir sobre a função Menu(): você deve criar uma função chamada Menu() a qual vai chamar as funções que forem necessárias.

 

Obs.: apenas observando, que dependendo da forma como você queira enviar ( passar ) os valores das suas variáveis para as suas funções, é que você vai precisar ou não introduzir os valores de suas variáveis dentro da função Menu() e então passar tais variáveis para a função que for chamada, ou ao contrario a variável ou o seu valor será definido dentro da função chamada, e na da menu().

 

void Menu ( void )

{

while(1)

{

cout << "===========MENU==========" << endl;

cout << "1 - Inserir" << endl;

cout << "2 - Listar" << endl;

cout << "3 - Buscar" << endl;

cout << "4 - Remover" << endl;

cout << "Introduza a opção: " << endl;

 

int op;

 

cin >> op;

 

int idade = 0;

cin >> idade;

 

switch(op)

{

case 1:

{

inserirlistaseq ( idade );

break;

}

. . . .

case 5:

{

exit(1);

}

default:

{

break;

}

}

}

return 0;

}

 

Neste caso a variável idade é declarada e recebe um valor dentro da função Menu(), e quando uma função que precise usar a variável idade for chamada, a variável idade é passada como argumento da função que foi chamada:

 

void Menu ( void )

{

int idade = 0;

cin >> idade;

 

switch(op)

{

case 1:

{

inserirlistaseq ( idade );

break;

}

}

 

e ao final de execução da função que for chamada, chamar a função Menu(); antes da ultima chave de fechamento da função, apenas observando que a forma como isso é feito pode variar dependendo da forma que você deseja que o código retorne ou não valores.

 

inserirlistaseq ( lista, tam, quant, valor );

{

. . . .

Menu();

}

 

Bom é + ou - isso ai, veja se consegue agora . . .

 

Ubuntu 14.04  GCC 4.8  CodeBlocks 13.12

 

Espero Ter Ajudado ! ! !

Editado por Felipe222
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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...