Jump to content

preciso ajuda com menus....


astrix
 Share

Recommended Posts

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;
}
Link to comment
Share on other 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?

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other 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  ?

Link to comment
Share on other 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.

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other 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  ?

Link to comment
Share on other 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;
}
Link to comment
Share on other 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  ? e aonde  ?

Link to comment
Share on other 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  ? e aonde  ?

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

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

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other 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.

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other 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  ?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.