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

suzy

menu, nao da para voltar atras porque?

5 mensagens neste tópico

B) :P :P :)

caros, ca ando eu com mais um duvida:( 

que sinceramente nao entendo porque

tenho um menu principal

1 - medicos

2 -pacientes

3 estatiditicas

4 sair

e depois tenho mais 2 submenus, mas o que nao me esta a funcionar é:

imaginemos que carrego na opção 1 - medicos

e depois carrego na opção 7 que e para voltar para tras para o menu principal.

realmente aparece o menu principal, mas sempre que eu carrego nesse menu so aparece e sempre o menu medicos, mesmo que carregue em pacientes e estatisticas.






#include <stdio.h>
#include <stdlib.h>
#include "medico.h"
#include "paciente.h"

#include "menu.h"

#define MAX 10







int main ()
{

   



   int op, oppa,opmed,opcon,opest,i,total=0,totalc=0;
   medicina medicos[MAX];
   cliente pacientes[250];
   printf("\n");
   printf("\n");
   linha();
   printf("\t");
   printf("           \n");
   linha();



   do {
      op = menu ();
      switch (op) {
      case 1:
           do{
             opmed=menu_medico();
             switch(opmed){
             case 1:total=insere(medicos,total); 
	     system("pause");
             break;
             case 2:lista_todos(medicos,total);
	     system("pause");
             break;
             case 3:pesquisa_medico(medicos,total);
		 system("pause");
             break;
             case 4:total=elimina(medicos,total);
		 system("pause");
             break;
		 case 5:altera(medicos,total);
		 system("pause");
             break;
             case 6:pesquisa_horario(medicos,total);
             break;
		 case 7:menu();// nao  sei comom fazer
		 break;
		 case 8:exit(0);
		 break;
             
             }
             }while(opmed!=9);
             break;
  

   

      case 2:
          do{
             oppa=menu_paciente();
             switch(oppa){
             case 1:totalc=inserec(pacientes,totalc);
	     system("pause");
             break;
             case 2:lista_pacientes(pacientes,totalc);
		 system("pause");
             break;
             case 3:totalc=elimina_paciente(pacientes,totalc);             
	     system("pause");
             break;
             case 4:altera_paciente(pacientes,totalc);
		 system("pause");
             break;
             case 5:totalc=elimina_paciente(pacientes,totalc);
		 system("pause");
             break;
             case 6:inserir_consulta(pacientes,totalc);
		 system("pause");
		 break;
		 case 7:listar_consultas(pacientes,totalc);
		 system("pause");
		 break;
		 case 8:historico(pacientes,totalc);
		 system("pause");
		 break;
		 case 9:pesquisa_cliente(pacientes,totalc);
		 break;
		 case 10:menu();
		 break;
             }
             }while(oppa!=10);
             break;
  



      case 3:
	  
	  do{opest=menu_estatistica();
             switch(opest){
             case 1:conta_medicos(medicos,total);
			 system("pause");
             break;
             case 2:conta_consultas(pacientes,totalc);
			 system("pause");
             break;
		 case 3:quais_pacientes(pacientes, totalc);
			 system("pause");
             break;
             case 4:conta_clientes(pacientes,totalc);
			 system("pause");
             break;
		 case 5:percentagem_urgentes(pacientes,totalc);
			 system("pause");
		 break;
		 case 6:numero_medio_consultas(pacientes,totalc);
			 system("pause");
		 break;
		 case 7: menu();
			 system("pause");
		 break;
		 case 8:printf("Escolha uma opcao: ");
			 system("pause");
		 break;

             
		 }
      
             }while(opest!=9);
	  break;
  break;

      }
   } while (op != 4);
   
    
    
    return 0;
   //system ("Pause");
}

alguem me sabe explicar porque :wallbash: muito obrigada, +e que encravei nisto ,  ja tentei de varias formas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash: falso alarme em algusn fuciona, mas em outros  quebre, alguem sabe uma forma de resolver isto de uma forma coerente :hmm:

muito obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está um pouco confuso...

Uma boa maneira de fazeres um menu é por exemplo:

int opcao=-1;

while (1) {
   system("cls"); //limpa ecra
   printf("- Item 1 \n");
   printf("- Item 2 \n");
   printf("- Item 3 \n");
   printf("- Item 0 \n");
   scanf(" %d", &opcao);
   
   switch (opcao) {
      case 1: item1(); break;
      case 2: item2(); break;
      case 3: item2(); break;
      case 0: quit(); break;
      default: break;
   }
}

Ou seja, o programa vai correr sempre dentro desse ciclo.

Assim por exemplo, seleccionas "1" e vais para o item 1. Quando terminar a funcao/procedimento "item1()", ele volta ao switch, faz break e e volta ao inicio apresentando de novo o menu.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash: pois, mas estou a fazer submenus dentro de menus:P

:wallbash:

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