Jump to content

problema codigo...


paullojorgge

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;

       

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.

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

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!

Link to post
Share on other 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.

Desaparecido.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.