Jump to content
paullojorgge

problema codigo...

Recommended Posts

paullojorgge

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;

       

Share this post


Link to post
Share on other sites
pedrosorio

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))


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
paullojorgge

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

Share this post


Link to post
Share on other sites
paullojorgge

é 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

Share this post


Link to post
Share on other sites
pedrosorio

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


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites
paullojorgge

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!

Share this post


Link to post
Share on other sites
TheDark

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.


Desaparecido.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.