Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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
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;
}#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.
>
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
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.
Ah entendi, quer dizer q ele acabava com um valor a mais do que eu deveria ter.
Shurd obrigado ajudou muito.
>
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 main()
{
Voce ta mandando o vetor de lugares pro scanf sem o endereço(&), porque voce faz o cadastro de voos 3 vezes?