ulfreitas 6 Denunciar post Postado Novembro 12, 2011 Boa tarde pessoal tentando fazer um programinha q armazena um cadastro de voo: quantidade de voos, nº do voo, destino, origem, nº de poltronas problema: ele roda pega as informaçoes 1 vez e para. void cadastroVoo(int voo[],int lugares[],char origem[][50],char destino[][50]){ int i,j; //aqui faz o cadastro for(i=0;i<3;i++){ puts("Informe o n do voo: "); scanf("%d",&voo[i]); puts("Informe a origem do voo: "); fflush(stdin); gets(origem[i]); puts("Informe o destino do voo: "); fflush(stdin); gets(destino[i]); puts("Informe a quant de lugares deste voo: "); scanf("%d",lugares[i]); puts("-----------------\n"); } //aqui exibi as informaçoes for(i=0;i<3;i++){ printf("n do voo: %d\nOrigem: %s\nDestino: %s\nLugares disponiveis: %d",voo[i],origem[i],destino[i],lugares[i]); } } int main() { int voo[12], lugares[12], n; char origem[3][50], destino[3][50]; puts("Informe o n de voos: "); scanf("%d",&n); cadastroVoo(voo,lugares,origem,destino); getch(); return 0; Compartilhar este post Link para o post Compartilhar em outros sites
Shurd 0 Denunciar post Postado Novembro 12, 2011 Boa tarde pessoal tentando fazer um programinha q armazena um cadastro de voo: quantidade de voos, nº do voo, destino, origem, nº de poltronas problema: ele roda pega as informaçoes 1 vez e para. void cadastroVoo(int voo[],int lugares[],char origem[][50],char destino[][50]){ int i,j; //aqui faz o cadastro for(i=0;i<3;i++){ puts("Informe o n do voo: "); scanf("%d",&voo[i]); puts("Informe a origem do voo: "); fflush(stdin); gets(origem[i]); puts("Informe o destino do voo: "); fflush(stdin); gets(destino[i]); puts("Informe a quant de lugares deste voo: "); scanf("%d",lugares[i]); puts("-----------------\n"); } //aqui exibi as informaçoes for(i=0;i<3;i++){ printf("n do voo: %d\nOrigem: %s\nDestino: %s\nLugares disponiveis: %d",voo[i],origem[i],destino[i],lugares[i]); } } int main() { int voo[12], lugares[12], n; char origem[3][50], destino[3][50]; puts("Informe o n de voos: "); scanf("%d",&n); cadastroVoo(voo,lugares,origem,destino); getch(); return 0; Voce ta mandando o vetor de lugares pro scanf sem o endereço(&), porque voce faz o cadastro de voos 3 vezes? Compartilhar este post Link para o post Compartilhar em outros sites
ulfreitas 6 Denunciar post Postado Novembro 13, 2011 Voce ta mandando o vetor de lugares pro scanf sem o endereço(&), porque voce faz o cadastro de voos 3 vezes? nossa kra pode crer, olha q erro besta hahaha, valew amigo. Na verdade, a pessoa escolhe quantos voos quer cadastrar, pq existem varias linhas de voos para varios lugares diferentes, e esse programa outra pessoa vai usar para procurar um determinado voo, fazer reserva. obrigado pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites
ulfreitas 6 Denunciar post Postado Novembro 13, 2011 Bom dia pessoal to com outro problema quando você consulta os dados do voo por origem ou destino aparece um monte de caracteres estranhos segue o codigo do programa #include<stdio.h> #include<conio.h> #include<string.h> void cadastroVoo(int voo[],int lugares[],char origem[][20],char destino[][20],int n){ int i,j; for(i=0;i<n;i++){ printf("Informe o n do voo: "); scanf("%d",&voo[i]); printf("\nInforme a origem do voo: "); fflush(stdin); gets(origem[i]); printf("\nInforme o destino do voo: "); fflush(stdin); gets(destino[i]); printf("\nInforme a quant de lugares deste voo: "); scanf("%d",&lugares[i]); puts("\n-----------------"); } } int main() { int voo[12], lugares[12], i, comp=0, op, op2, num_voo, n; char origem[3][20], destino[3][20], local[21]; printf("Informe o n de voos: "); scanf("%d",&n); puts("\n-----------------"); cadastroVoo(voo,lugares,origem,destino,n); do{ printf("\nDigite sua opcao:"); puts("\n(1) Consultar (2) Reservar (3) Finalizar"); scanf("%d",&op); if(op==1){ printf("\nDigite sua opcao:"); puts("\n(1) Consulta por voo (2) Consulta por origem (3) Consutlta por destino"); scanf("%d",&op2); if(op2==1){ printf("\nDigite o numero de voo: "); scanf("%d",&num_voo); i=0; while((i<n) && (num_voo != voo[i])){ i++; } if(i==n){ printf("\nVoo inexistente"); puts("\n-----------------"); } else{ printf("\nNumero do voo: %d",voo[i]); printf("\nLocal de origem: %s",origem[i]); printf("\nLocal de destino: %s",destino[i]); printf("\nLugares disponiveis: %d",lugares[i]); puts("\n-----------------"); } }//fecha op2=1 else if(op2==2){ i=0; printf("\nDigite o local de origem: "); fflush(stdin); local[i]=getchar(); while(i<20 && local[i]!='\n'){ i++; local[i]=getchar(); } local[i]='\0'; for(i=0;i<n;i++){ comp+=strcmpi(local,origem[i]); } if(comp==0){ printf("\nNumero do voo: %d",voo[i]); printf("\nLocal de origem: %s",origem[i]); printf("\nLocal de destino: %s",destino[i]); printf("\nLugares disponiveis: %d",lugares[i]); puts("\n-----------------"); } else{ printf("\nVoo inexistente"); puts("\n-----------------"); } }//fecha op2=2 else if(op2==3){ i=0; printf("\nDigite o local de destino: "); fflush(stdin); local[i]=getchar(); while(i<20 && local[i]!='\n'){ i++; local[i]=getchar(); } local[i]='\0'; for(i=0;i<n;i++){ comp+=strcmpi(local,destino[i]); } if(comp==0){ printf("\nNumero do voo: %d",voo[i]); printf("\nLocal de origem: %s",origem[i]); printf("\nLocal de destino: %s",destino[i]); printf("\nLugares disponiveis: %d",lugares[i]); puts("\n-----------------"); } else{ printf("\nVoo inexistente"); puts("\n-----------------"); } }//fecha op2=3 }//fecha op=1 else if(op==2){ printf("\nDigite o numero do voo: "); scanf("%d",&num_voo); i=0; while(i<n && num_voo!=voo[i]){ i++; } if(i==n){ printf("Voo nao encontrado"); } else if(lugares[i]==0){ printf("Voo lotado"); } else{ lugares[i]-=1; printf("Reserva confirmada"); } } }while(op!=3); getch(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Shurd 0 Denunciar post Postado Novembro 14, 2011 #include<stdio.h> #include<conio.h> #include<string.h> void cadastroVoo(int voo[],int lugares[],char origem[][21],char destino[][21],int n) { int i,j; for(i=0; i<n; i++) { printf("Informe o n do voo: "); scanf("%d",&voo[i]); printf("\nInforme a origem do voo: "); fflush(stdin); gets(origem[i]); printf("\nInforme o destino do voo: "); fflush(stdin); gets(destino[i]); printf("\nInforme a quant de lugares deste voo: "); scanf("%d",&lugares[i]); puts("\n-----------------"); } } int main() { int voo[12], lugares[12], i, comp=0, op, op2, num_voo, n,achou=0; char origem[12][21], destino[12][21], local[21]; printf("Informe o n de voos: "); scanf("%d",&n); puts("\n-----------------"); cadastroVoo(voo,lugares,origem,destino,n); do { printf("\nDigite sua opcao:"); puts("\n(1) Consultar (2) Reservar (3) Finalizar"); scanf("%d",&op); if(op==1) { printf("\nDigite sua opcao:"); puts("\n(1) Consulta por voo (2) Consulta por origem (3) Consutlta por destino"); scanf("%d",&op2); if(op2==1) { printf("\nDigite o numero de voo: "); scanf("%d",&num_voo); i=0; while((i<n) && (num_voo != voo[i])) { i++; } if(i==n) { printf("\nVoo inexistente"); puts("\n-----------------"); } else { printf("\nNumero do voo: %d",voo[i]); printf("\nLocal de origem: %s",origem[i]); printf("\nLocal de destino: %s",destino[i]); printf("\nLugares disponiveis: %d",lugares[i]); puts("\n-----------------"); } }//fecha op2=1 else if(op2==2) { printf("\nDigite o local de origem: "); fflush(stdin); gets(local); i=0; while(i<n&&!achou) { comp=strcmpi(local,origem[i]); i++; if(comp==0) { achou=i; if(achou!=0) { printf("\nNumero do voo: %d",voo[achou-1]); printf("\nLocal de origem: %s",origem[achou-1]); printf("\nLocal de destino: %s",destino[achou-1]); printf("\nLugares disponiveis: %d",lugares[achou-1]); puts("\n-----------------"); achou=0; } else { printf("\nVoo inexistente"); puts("\n-----------------"); } } } }//fecha op2=2 else if(op2==3) { i=0; printf("\nDigite o local de destino: "); fflush(stdin); gets(local); while(i<n&&!achou) { comp=strcmpi(local,destino[i]); i++; if(comp==0) { achou=i; if(achou!=0) { printf("\nNumero do voo: %d",voo[achou-1]); printf("\nLocal de origem: %s",origem[achou-1]); printf("\nLocal de destino: %s",destino[achou-1]); printf("\nLugares disponiveis: %d",lugares[achou-1]); puts("\n-----------------"); achou=0; } else { printf("\nVoo inexistente"); puts("\n-----------------"); } } } }//fecha op2=3 }//fecha op=1 else if(op==2) { printf("\nDigite o numero do voo: "); scanf("%d",&num_voo); i=0; while(i<n && num_voo!=voo[i]) { i++; } if(i==n) { printf("Voo nao encontrado"); } else if(lugares[i]==0) { printf("Voo lotado"); } else { lugares[i]-=1; printf("Reserva confirmada"); } } } while(op!=3); puts("\t---<ENTER> finaliza o programa---\n"); getch(); return 0; } Olá, estou com preguiça de postar o que voce fez de errado agora, amanha de manha eu posto, mas ai esta a resolucão. Compartilhar este post Link para o post Compartilhar em outros sites
ulfreitas 6 Denunciar post Postado Novembro 15, 2011 Olá, estou com preguiça de postar o que voce fez de errado agora, amanha de manha eu posto, mas ai esta a resolucão. Opa blza? eu vi o q você acrescentou, mas realmente nao entendi o erro, vou aguardar sua explicação. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Shurd 0 Denunciar post Postado Novembro 16, 2011 for(i=0;i<n;i++){ comp+=strcmpi(local,origem[i]); } if(comp==0){ printf("\nNumero do voo: %d",voo[i]); printf("\nLocal de origem: %s",origem[i]); printf("\nLocal de destino: %s",destino[i]); printf("\nLugares disponiveis: %d",lugares[i]); puts("\n-----------------"); } else{ printf("\nVoo inexistente"); puts("\n-----------------"); } while(i<n&&!achou) { comp=strcmpi(local,origem[i]); i++; if(comp==0) { achou=i; if(achou!=0) { printf("\nNumero do voo: %d",voo[achou-1]); printf("\nLocal de origem: %s",origem[achou-1]); printf("\nLocal de destino: %s",destino[achou-1]); printf("\nLugares disponiveis: %d",lugares[achou-1]); puts("\n-----------------"); achou=0; } else { printf("\nVoo inexistente"); puts("\n-----------------"); } } } Voce estava fazendo um comp+= e fazia isso num for, então ele acaba não dando zero algumas vezes, e ficava com um valor mais alto. Como o i++ fica depois de achar o valor do comp i achou tem que ser -1 para ser o valor de onde esta os dados. Compartilhar este post Link para o post Compartilhar em outros sites
ulfreitas 6 Denunciar post Postado Novembro 19, 2011 Ah entendi, quer dizer q ele acabava com um valor a mais do que eu deveria ter. Shurd obrigado ajudou muito. Compartilhar este post Link para o post Compartilhar em outros sites