Oraf 0 Denunciar post Postado Dezembro 19, 2009 Boas, num trabalho de c++ k estou a fazer tenho 2 programas um k gera tipos de carros e semaforos e de seguida sao guardados num ficheiro txt... o segundo programa tem de ir busacar esses dados ao ficheiro e consoante o semaforo assim atuar.. o programa começa por ir buscar a primeira linha do ficheiro e comparar com semaforo1 2 3 ou 4, ao fim disso entra numa funçao k vai correr o txt ate encontrar outra vez um semaforo, kd encontra sai dessa funçao e volta para a do semaforo, o problema e k esta sempre a ir busacar o primeiro semaforo.. int compare(string lin) { string semaforo1("semaforo1"); string semaforo2("semaforo2"); string semaforo3("semaforo3"); string semaforo4("semaforo4"); ifstream ff; ff.open("C:\\trabalho\\uuuuu\\uuuuu\\semaforo.txt",ios::_Nocreate); getline (ff,line); cout<<""<<line<<"xx"<<endl; if (line.compare(semaforo1) == 0) { cout<<"tou no compare semaforo1"<<endl; return 1; } else if (line.compare(semaforo2) == 0) { cout<<"tou no compare semaforo2"<<endl; return 2; } else if (line.compare(semaforo3) == 0) { cout<<"tou no compare semaforo3"<<endl; return 3; } else if (line.compare(semaforo4) == 0) return 4; } //______________________________________________________________________________________ void peras(string line); void carro() string line; ifstream ff; ff.open("C:\\trabalho\\uuuuu\\uuuuu\\semaforo.txt",ios::_Nocreate); cout<<"tou no carro"<<endl; while (!(line.compare(semaforo1)== 0) ||(line.compare(semaforo2)== 0) || (line.compare(semaforo3)== 0)||(line.compare(semaforo4)== 0)) { getline (ff,line); if(line.compare(ll) == 0) { cout <<"veiculo ligeiro"<< "\n"; } else if(line.compare(mm) == 0) { cout <<"mata velhos encontrado"<< "\n"; } else if(line.compare(pp) == 0) { cout <<"camiao"<< "\n"; } }; cout<<"\n ACabei"<<endl; cout<<""<<line<<endl;//**aqui a linha que da e o proximo semaforo mas quando entra na funçao peras da outra vez o primeiro semaforo peras(); } //_______________________________________________________________________________________ void peras(string line) { switch(compare (line)) { case 1: { cout<<"tou no peras semaforo1"<<endl; carro(); break; } case 2: { cout<<"tou no peras semaforo2"<<endl; carro(); break; } case 3: { cout<<"tou no peras semaforo3"<<endl; carro(); cout<<"vai acabar"<<endl; break; } } } ou seja se o primeiro semaforo for semaforo2 ele entra na funçao carro corre o txt ate xegar a por exemplo semforo1, no final da funçao carro diz k a linha onde esta e semaforo1 mas kuando vai para a funçao peras vai buscar outra vez o semaforo 2 e sempre assim...nao sai deste ciclo... desde ja agradeço a ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Dezembro 19, 2009 Ficou muito confuso, não entendi o que você quer que os programas façam... Mas encontrei um erro. Abaixo da linha que comentaste: /**aqui a linha que da e o proximo semaforo mas quando entra na funçao peras da outra vez o primeiro semaforochamas a função "peras", mas sem argumentos... Compartilhar este post Link para o post Compartilhar em outros sites
Oraf 0 Denunciar post Postado Dezembro 19, 2009 pois realmente tem. eu tenho um txt k contem informaçao de semaforos e carros.. deste genero semaforo1 veiculo_ligeiro veiculo_pesado semaforo2 motociclo veiculo_pesado semforo3 .... o k se passa e k eu vou buscar a primeira linha do ficheiro para a funçao compare, depois passa para a funçao peras e consuante o semaforo ele assim escolhe e entra na funçao carro, o problema ta apartir daki, ele corre a funçao carro e no final kuando a funçao axa a linha semafor2 sai de carro e volta para peras, mas em vez de verificar k e semaforo 2 ele vai buscar de novo a primeira linha ou seja semaforo1..e nao passa daki, sempre k volta a funçao peras volta como semforo1.. Compartilhar este post Link para o post Compartilhar em outros sites