Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
Andre Justulino

Inserir Menu

Question

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;

}

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 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 ! ! !

Edited by Felipe222

Share this post


Link to post
Share on other 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;

}


 

Share this post


Link to post
Share on other 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!

 

 

Edited by Felipe222

Share this post


Link to post
Share on other 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 ! ! !

Edited by Felipe222

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148428
    • Total Posts
      643856
×
×
  • Create New...