Gdzie zrobiłem błąd? (z wykorzystaniem fstream)
Ostatnio zmodyfikowano 2010-01-30 17:52
grzesiekz Temat założony przez niniejszego użytkownika |
Gdzie zrobiłem błąd? (z wykorzystaniem fstream) » 2010-01-30 17:52:32 Witajcie. Zabrałem się za pracę domową i w jednym miejscu trafiłem na dziwny problem. Całe zadanie jest znacznie dłuższe, ale sprawdzam regularnie każdą kolejną funkcję, więc jestem pewien, iż ta najnowsza powoduje problemy. Do rzeczy: Mam plik z losowymi liczbami całkowitymi (ilość: 10000, zakres: <2;7777>) oddzielonymi enterami. Muszę pobrać do tablicy te liczby, które są pierwsze. Teoretycznie bardzo proste, z podobnym zadaniem już miałem styczność, ale wtedy działało -.- Teraz wstawię kod, potem jeszcze coś dopowiem. void odczyt_pierwsze_sort() { int liczba; int ilosc = 0; int l_p[ 10000 ]; fstream odczyt1( sciezka1 ); if( !odczyt1.is_open() ) cout << "\nBlad otwarcia pliku dane.txt"; else { while( !odczyt1.eof() ) { if( odczyt1.peek() != 10 ) { odczyt1 >> liczba; if( pierwsza( liczba ) == 1 ) { l_p[ ilosc ] = liczba; ilosc++; } } } odczyt1.close(); } for( int n = 0; n <= ilosc; n++ ) cout << l_p[ n ] << endl; }
bool pierwsza( int L ) { bool p = 1; for( int dzielnik = 2; dzielnik <= sqrt( L ); dzielnik++ ) { if( L % dzielnik == 0 ) p = 0; } return p; }
Problem polega na tym, że funkcja wpada jakby w nieskończoną pętlę. Nadal działa (nie pojawia się napis "brak odpowiedzi" oznaczający zawieszenie), ale nie posuwa się do przodu. Pętla zawierająca wypisanie tablicy l_p nie zostaje nawet rozpoczęta. Kursor w konsoli stoi w miejscu. Dodam, że kompilacja przebiega bez błędów. Jakiś pomysł? EDIT: Dobra, już sobie poradziłem :D Usunąłem fragment sprawdzający, czy wystąpił enter i bez tego działa już tak, jak należy :P Można zamknąć. |
|
« 1 » |