• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

astrix

preciso ajuda com menus....

14 mensagens neste tópico

entao e assim ja fiz o meu menu principal,agora nao estou a ver como utilizar aqui o ciclo do...while porque dame geito q ele percorra os cases pelo menos uma vez,e so depois saia se o resultado nao fore o esperado,pois terei q fazer uma validaçao sobre as opçoes caso o utilizador insira uma qualquer tecla q nao as q lhe dei como base ele imita uma mensagem para o utilizador a dar a dita mensagem e a pedir q insira uma das teclas possiveis,sei q sera uma sena basica mas nao estou a ir lá,vou deixar aqui o codigo a ver se alguem me ajuda  :hmm

void menu()
{
char opcao;

printf("                 caixa\n\n");
printf("1 - Recolha de dados\n\n");                   
printf("2 - Consultar resultados\n\n");
printf("3 - Sair\n\n");
printf("Opçao: ");
opcao=getchar();                       

}  
        

int main()                                                                                                                                                     
{
menu();            
return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

char menu()
{
char opcao;

printf("\tcaixa\n\n");
printf("1 - Recolha de dados\n\n");                   
printf("2 - Consultar resultados\n\n");
printf("3 - Sair\n\n");
printf("Opçao: ");
opcao=getchar();
return (opcao);

} 
       

int main()                                                                                                                                                     
{
   char opc; 
  do{
      opc = menu();
   } while(opc != '3')
return 0;
}

É isto que queres?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois agora baralhaste-me todo pois tou a fazer isto por funçoes e no main nao tenho mais nada do q o nome das funçoes a chamar e tu neste caso com o codigo como puseste baralhaste-me e nao estou a ver como por isso de acordo com o q estou a fazer se puderes dar mais uma ajudita agradeço  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por exemplo, depois dentro do ciclo tens um switch

int main()                                                                                                                                                     
{
   char opc; 
  do{
      opc = menu();
      switch (opc){
            case '1': recolha();break; //Chamas a função de recolha
            case '2': consulta();break; //Chamas a função de consulta
      }
   } while(opc != '3')
return 0;
}

Os nomes das funções são um exemplo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

continuo a nao perceber o codigo como disseste seria qualquer coisa como

void menu()
{
char opc;

printf("                 caixa\n\n");
printf("1 - Recolha de dados \n\n");                   
printf("2 - Consultar resultados\n\n");
printf("3 - Sair\n\n");
printf("Opçao: ");
opc=getchar();                       
  
}  
        

int main()                                                                                                                                                     
{

   char opc; 
  do{
      opc = menu();
      switch (opc){
            case 1: recolha();break; //Chamas a função de recolha
            case 2: consulta();break; //Chamas a função de consulta
      }
   } while(opc != '3')
return 0;           

}

mas se era isto dame bue de errossera q contigo nao esta a dar erros ou nao estas a correr isso  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Será algo assim:

#include <stdio.h>

int main() {
    int opcao;
    do {
        printf("\tcaixa\n\n");
        printf("1 - Recolha de dados\n\n");                   
        printf("2 - Consultar resultados\n\n");
        printf("3 - Sair\n\n");
        printf("Opcao: ");
        scanf("%d",&opcao);
        switch (opcao) {
               case 1: recolha();
                         break;
               case 2: consulta();
                         break;
               case 3: break;
               default: printf("Opcao invalida!\n\n");
               }
        } while (opcao!=3);
    return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

amigo baderous corre mas agora neste caso eu q estava a fazer por so no main as funçoes e chamava depois por elas fora pois a muitas variaveis q meto em gloval como chamo agora a funçao recolha de dados e consulta de dados  :hmm: e aonde  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

amigo baderous corre mas agora neste caso eu q estava a fazer por so no main as funçoes e chamava depois por elas fora pois a muitas variaveis q meto em gloval como chamo agora a funçao recolha de dados e consulta de dados  :hmm: e aonde  :hmm:

De certeza que estás a fazer o include do stdio.h?

Que erros te dá? Podes colocá-los aqui?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

anolsi, o problema no código que postaste é que a tua variável opção era um char e depois no switch estavas a usar como se fosse int.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

anolsi, o problema no código que postaste é que a tua variável opção era um char e depois no switch estavas a usar como se fosse int.

Tens razão faltavam as pelicas. Só usei char, porque ele já estava a usar. Mas não vejo mais erros.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ola amigos resolvi o problema desta maneira q aqui vou por e pos char em vez de inteiro pois se por engano metesse algo diferente de inteiro o programa crachava,por isso ter um char em vez de inteiro

void recolha()
{

}

void consulta()
{

}

void menu()
{  
    char opcao;
    do {
        clrscr();
        printf("                 caixa\n\n");
        printf("1 - Recolha de dados\n\n");                   
        printf("2 - Consultar resultados\n\n");
        printf("3 - Sair\n\n");
        printf("Opcao: ");
opcao=getchar();
        fflush(stdin);
switch (opcao)
       {
       case '1': recolha();
		 break;
               case '2': consulta();
                         break;
               case '3': break;
               default: printf("Opcao invalida!!!\n\n");
               }
}
    while (opcao!='3');
}

         
int main()
{
menu();           
return 0;
}

entao agora o q tenho q fazer e o seguinte q como e a primeira vez q vou usar nao esta muito facil a utilizaçao...eu tenho 3 ficheiros e nestes esta variada inf informaçao como nome da casa,quantas pessoas la trabalham,quantas podem tocar nas caixas"registadoras",e um vector onde consta o nome de cada "dono"dessa casa[21]vector com 21 posiçoes onde posso controlar ao fim do ano numa pequena votaçao o melhor dono dessas casas e tirar o vencedor tudo em inteiros agora e assim como fasso isto usando a funçao fwrite para ler logo o ficheiro q esta por exemplo em C:\\Users\\****\\Desktop\\****\\lisboa .dat,para q depois fazer algo tipo soma depois da abertura da informaçao descrita em cima e depois de ir lendo ficheiro a ficheiro ele me ir dando os totais das variaveis,tipo quantas casas tratei quantas pessoas la trabalham no conjunto das casas tratadas e por ai fora...penso q fduiexplicito se alguem quizer dar dai uma ajuda sera bem vinda pois como disse atraz  e 1 vez a trabalhar com ficheiros  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao pessoal sera q ninguem me da uma ajuda para ver se acabo isto e se entendo o q esta mal  :down:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora