Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Gdzie zrobiłem błąd? (z wykorzystaniem fstream)

Ostatnio zmodyfikowano 2010-01-30 17:52
Autor Wiadomość
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.
C/C++
void odczyt_pierwsze_sort()
{
    int liczba;
    int ilosc = 0;
    int l_p[ 10000 ]; //na 'odwal sie'
    fstream odczyt1( sciezka1 ); //sciezka1 to tablica char ze sciezka i nazwa
    //pliku, tu bledu nie ma
    if( !odczyt1.is_open() ) cout << "\nBlad otwarcia pliku dane.txt";
    else
    {
        while( !odczyt1.eof() )
        {
            if( odczyt1.peek() != 10 ) //jak enter, to pominie; w innym programie
            { //dzialalo cos podobnego o.O
                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; //sprawdzam czy dziala
   
}

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ąć.
P-13414
« 1 »
  Strona 1 z 1