Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ulfreitas

[Resolvido] matriz passagem de parametros

Recommended Posts

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

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

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

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

#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

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

               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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.