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

paullojorgge

problema codigo...

9 mensagens neste tópico

boa tarde, espero que me possam ajudar...

o ciclo for não pára. queria tipo inserir 3 participantes e adicionar os dados dos 3, mas ele não pára. pede sempre bi e numCarro.

o que será?

desde já obrigado!

system("cls");
	  printf("Numero de participantes: ");
	  fflush(stdin);
	  scanf("%d",&corrida.numPar);
                    
	  for(i=0;i<&corrida.numPar;i++)
	  {
                            do
                            {
                                          system("cls");
                                          printf("Numero BI: ");
                                          fflush(stdin);
                                          aux2=scanf("%d",&temp2);
                                          
                                          for(i=0;i<cont_corrida;i++)
                                          {
                                                            if(v_corridas[i].bi==temp2)
                                                            {
                                                                                      printf("\nJa existe um piloto com o mesmo numero de bi!!");
                                                                                      getch();
                                                                                      return;
                                                            }
                                          }
                                          
                                          if(temp2>99999999 || temp2<1000 || aux2==0)
                                          {
                                                           printf("\n\nNumero de BI mal inserido!!");
                                                           getch();
                                          }
                                          
                                        
                            }while(temp2>99999999 || temp2<1000 || aux2==0);
                            
                            corrida.bi=temp2;  
                            
                            system("cls");
                            printf("Numero do carro utilizado: ");
                            scanf("%d",&corrida.numCarro);
           }
           return corrida;

       

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

for(i=0,i<corrida.numPar,i++)

Se meteres &corrida.numPar só sais do ciclo quando o i for igual ao endereço de memória dessa variável, ou seja, o ciclo repete-se uns bons milhares de vezes.

(Experimenta fazer printf("%d",&corrida.numPar) e vês))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado pela dica do printf para confirmar isso. mas mesmo assim continua sempre a pedir informação...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é estranho se fizer for(i=0,i<corrida.numPar,i++) é como se tivesse como estava inicialmente for(i=0,i<&corrida.numPar,i++), mas se fizer for(i=0,i<corrida.numPar--,i++) já funciona, mas retira sempre menos um por causa do --.

Acho estranho não funcionar apenas com corrida.numPar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Diz-me o que inseres e qual é o output exacto do programa com o código que eu disse.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epá obrigado pela ajuda. modifiquei o for de forma a funcionar

for(i=-1;i<corrida.numPar--;i++) como subtrai um começa por -1.

São coisas parvas que não noto. Já ontem tive perto de uma hora para ver um problema e era um simples ; no if.

Mais uma vez muito obrigado pela ajuda. Bom fim de semana!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não faças i<corrida.numPar-- senão em cada ciclo do for vais decrementar o numPar. Pode até funcionar nesse caso concreto de numPar=3, mas se numPar=10, por exemplo, só te vai pedir os dados para 7 participantes.

Utiliza i<corrida.numPar-1, e inicia i a 0.

EDIT: não tinha visto o código que puseste ali em cima. Estás a utilizar i como índice de 2 fors encadeados. Vê lá bem isso, porque de certeza que não é o que queres, e provavelmente tens tido sorte com os valores que inseriste!

EDIT2: Outra coisa: ali no for interior fazes return;, e no fim da função fazes return corrida, onde corrida é uma struct. Algo está errado, o return tem que devolver um valor do tipo de retorno da função.

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