[Dúvida] Programa C++

ola, ando á cerca de 4 dias com este problema, fiz o programa, resolvi uns bugzitos mas agora não consigo perceber o porquê que na versão dois do programa que vou mostrar em baixo, quando quero inserir um dado, escolho introduzir por exemplo o Nome, clico N e aquilo começa um ciclo e nunca mais para.... alguém "me faz um desenho" e me ajuda a resolver o problema? eu penso que é um ciclo mal fechado... mas não entendo é qual... mas também pode ser outra coisa... agradecia que me ajudassem com esta treta!!! já passei um montão de horas a olhar para isto

aqui deixo o link para download do ficheiro código fonte .cpp para alguém que queira ver o codigo bem "formatado", ajuda a ler...

Download (tirar os *** para download): http:***//rapidshare.com/files/166082113/f10.cpp.html



Código
#include <iostream.h>

struct aluno
{
char nome[10];
int idade;
char sexo[10];
char morada[75];
int bi;
float peso;
double altura;

};

aluno turma[50];

int flag = 1;

int menu = 0;

int menu2 = 0;

int flag2 = 1;

int flag3 = 1;

int flag4 = 1;

int flag5 = 1;

int menu3 = 0;

int menu4 = 0;

int menu5 = 0;


void main()
{
while (flag!=0)

{ // ABRE CICLO WHILE 1



cout<<"Para versao 1 do programa insira 1; \n Para versao 2 do programa insira 2; \n Para Sair insira 3! \n";
cin >> menu;






switch (menu)

{

case 1:

//INICIO DA VERSAO 1 DO PROGRAMA
flag2 = 1;

while (flag2!=0)

{


cout<<"Para Introduzir dados insira 1; \n Para Ler os dados Insira 2; \n Para Sair Insira 3! \n";
cin >> menu2;


switch (menu2)

{

case 1:

cout<<"Introduza o Nome \n";
cin>>turma[0].nome;

cout<<"Introduza a Idade \n";
cin>>turma[0].idade;

cout<<"Introduza o Sexo \n";
cin>>turma[0].sexo;

cout<<"Introduza a Morada sem espacos \n";
cin>>turma[0].morada;

cout<<"Introduza o Numero de BI \n";
cin>>turma[0].bi;

cout<<"Introduza o Peso \n";
cin>>turma[0].peso;

cout<<"Introduza a Altura \n";
cin>>turma[0].altura;

break;



case 2:

cout<<"Nome:"<<turma[0].nome<<"\n";
cout<<"Idade:"<<turma[0].idade<<"\n";
cout<<"Sexo:"<<turma[0].sexo<<"\n";
cout<<"Morada:"<<turma[0].morada<<"\n";
cout<<"Numero do BI:"<<turma[0].bi<<"\n";
cout<<"Peso:"<<turma[0].peso<<"\n";
cout<<"Altura:"<<turma[0].altura<<"\n";

break;



case 3:

flag2 = 0;

break;


default:

cout<<"Valor Introduzido invalido =P \n";

break;

}//fecha switch menu2




}// FECHA WHILE DO FLAG2 OU SEJA FECHA A PRIMEIRA VERSAO DO PROGRAMA


break;


case 2: // Inicio da segunda versao do programa!


flag3 = 1;

while (flag3!=0)

{


cout<<"Para Introduzir dados insira 1; \n Para Ler os dados Insira 2; \n Para Sair Insira 3! \n";
cin >> menu3;


switch (menu3)

{

case 1:

flag4 = 1;

while (flag4!=0)

{

cout<<"Para Introduzir Nome Insira (N); \n Para Introduzir Idade Insira (I); \n Para Introduzir Sexo Insira (S); \n Para Introduzir Morada Insira (M); \n Para Introduzir numero do BI Insira (B); \n Para Introduzir Peso Insira (P); \n Para Introduzir Altura Insira (A); \n Para voltar ao menu anterior Insira (0)!";
cin>>menu4;


switch (menu4)

{

case 'n':

cout<<"Introduza o Nome \n";
cin>>turma[0].nome;

break;


case 'i':

cout<<"Introduza a Idade \n";
cin>>turma[0].idade;

break;


case 's':

cout<<"Introduza o Sexo \n";
cin>>turma[0].sexo;

break;


case 'm':

cout<<"Introduza a Morada em vez de espacos insira underscore (_) \n";
cin>>turma[0].morada;

break;


case 'b':

cout<<"Introduza o numero do BI \n";
cin>>turma[0].bi;

break;


case 'p':

cout<<"Introduza o Peso \n";
cin>>turma[0].peso;

break;


case 'a':

cout<<"Introduza a Altura \n";
cin>>turma[0].altura;

break;


case '0':

flag4 = 0;

break;


default :

cout<<"VALOR INVALIDO =D INTRODUZA UM NOVO VALOR, DAVA JEITO SE FOSSE VALIDO =P \n";

break;

}//fecha switch menu4


}//fecha while flag4 e o programa volta ao menu3




break;// Fecha case 1 do menu3 ou seja fecha a opcao de insrir dados



case 2:


flag5 = 1;

while (flag5!=0)

{

cout<<"Para Ler Nome Insira (N); \n Para Ler Idade Insira (I); \n Para Ler Sexo Insira (S); \n Para Ler Morada Insira (M); \n Para Ler numero do BI Insira (B); \n Para Ler Peso Insira (P); \n Para Ler Altura Insira (A); \n Para voltar ao menu anterior Insira (0)!";
cin>>menu5;


switch (menu5)

{

case 'n':

cout<<"Nome:"<<turma[0].nome;

break;

case 'i':

cout<<"Idade:"<<turma[0].idade;

break;

case 's':

cout<<"Sexo:"<<turma[0].sexo;

break;

case 'm':

cout<<"Morada:"<<turma[0].morada;

break;

case 'b':

cout<<"Numero de BI:"<<turma[0].bi;

break;

case 'p':

cout<<"Peso:"<<turma[0].peso;

break;

case 'a':

cout<<"Altura:"<<turma[0].altura;

break;

case '0':

flag5 = 0;

break;

default :

cout<<"VALOR INVALIDO =D INTRODUZA UM NOVO VALOR, DAVA JEITO SE FOSSE VALIDO =P \n";

break;

}//fecha switch menu5
}//Fecha while menu5

break;

//Acaba a Versao dois do programa



case 3:

flag3 = 0;

break;


default :

cout<<"Valor Invalido :P Introduza um valor valido!...!! \n";


break;

}//Fecha Switch menu3



}//fecha while flag3


case 3:

flag = 0;

break;


default:

cout<<"Valor invalido introduza um valor valico \n";

break;

}//fecha switch menu

}//fecha while flag

}//fecha programa :D



EDIT:

OMG... ENCONTREI A SOLUÇÃO!!!! finalmente!!!!!!!!!!


RESOLUÇÃO:

MUDAR AS VARIÁVEIS

int menu4 = 0;

int menu5 = 0;


PARA...

char menu4;

char menu5;
 
Última edição:
Back
Topo