paullojorgge 0 Posted January 3, 2009 Report Share Posted January 3, 2009 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 4 Posted January 3, 2009 Report Share Posted January 3, 2009 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 0 Posted January 3, 2009 Author Report Share Posted January 3, 2009 obrigado pela dica do printf para confirmar isso. mas mesmo assim continua sempre a pedir informação... Link to post Share on other sites
paullojorgge 0 Posted January 3, 2009 Author Report Share Posted January 3, 2009 é 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
pedrosorio 4 Posted January 3, 2009 Report Share Posted January 3, 2009 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. Link to post Share on other sites
paullojorgge 0 Posted January 3, 2009 Author Report Share Posted January 3, 2009 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
pedrosorio 4 Posted January 3, 2009 Report Share Posted January 3, 2009 😲 : :surrender: Não respondo a dúvidas por mensagem. Link to post Share on other sites
TheDark 0 Posted January 3, 2009 Report Share Posted January 3, 2009 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
paullojorgge 0 Posted January 3, 2009 Author Report Share Posted January 3, 2009 obrigado pela ajuda, mas já foi tudo modificado... Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now