[C++] Jak sprawdzić czy to cyfra czy puste pole?


#1

Witam,

Otóż pobieram liczby z pliku tekstowego i przypisuję je do zmiennych. Niestety nie wiem dokładnie ile tych liczb w jednej linijce jest więc pobieram tyle ile może być maksymalnie :wink:

Wychodzi coś takiego:

problem12345.png

Jak widać wyświetlają mi się tutaj niestworzone liczby xD

W tym przypadku w ciągu znaków znajdują się tylko 4 liczby więc po "2" program powinien już skończyć.

Jak więc sprawdzić czy pobrana liczba jest możliwa? Czy jest liczbą?

Pozdrawiam.


(Sawyer47) #2

Jaki jest format tego pliku tekstowego? Jeśli w linijce znajduje się nieznana liczba liczb, to możesz wczytać "surową" linię tekstu, a następnie pobierać z niej liczby stringstreamem w pętli.


#3

typ pliku TXT.

W ten sposób pobieram liczby z linijki:

//std::string line = "v 0.04356 6.3245325 8.3245";

    std::for_each(line.begin(), line.end(), alhpa_to_space);


    std::stringstream stream(line);

    std::vector nums;


    std::copy(std::istream_iterator(stream), std::istream_iterator(),

              std::back_inserter(nums));


    //std::copy(nums.begin(), nums.end(),

              //std::ostream_iterator (std::cout, "; "));

    std::cout << " Wynik: "<< nums[zwroc] <
    return nums[zwroc];

(Marcinch7) #4

Wiesz co to notacja wykładnicza?


(floyd) #5

Chodzi Ci o te zapisy?

4.12702e+021

2.18014e-041

To nie są niestworzone liczby, ale zapisy które normalnie się stosuje, a zapis: 4.12702e+021 oznacza liczbę: 4.12702 razy 10 do potęgi 27 czyli :

4.12702e+021=4127020000000000000000

2.18014e-041=0,0000000000000000000000000000000000000000218014


(Sawyer47) #6

No i z czym masz problem? Liczby z linijki masz w wektorze - tym samym masz dostępną liczbę tych liczb w linijce.