Program z użyciem danych tekstowych

0

Mam kłopot z zadaniem z Programowania. Mam zaproponować strukturę programu, który wczyta dane z pliku.txt zawierającego kilka wierszy tylko i wyłącznie liczb rzeczywistych.
Czy mógłby ktoś mi wyjaśnić w jaki sposób to zrobić.

0

Co zrobiłaś do tej pory?

0

Jedyne co wiem to to że za pomocą ifstream ifile("dane.txt"); można wczytać dane z pliku a dalej czarna dziura

1

Otwórz plik ,użyj fseek , ustaw wskaźnik na końcu , ftell poda Ci ilość bajtów pod to za alokuj tablice , wczytaj tam swój plik . Za alokuj drugą tablice o identycznym rozmiarze co ta pierwsza . Przeszukuj w forze znaków '0'<= && <='9' lub czy wczytany znak =='.' || czy =='-' ,zapisuj znalezione znaki do tej drugiej tablicy dopóki warunek jest spełniony,inkrementując przy tym jej indeks . Kiedy warunek nie będzie spełniony wywołaj funkcje
double konwerjsa(char *tablica_druga) wewnątrz niej użyj funkcji strtod i zwróć tą wartość najlepiej do jakiejś tablicy bo jesteś nadal w pętli for potem usuń tablice drugą i utwórz ją na nowo i ustaw indeks na zero . Musisz zrobić warunek na dodanie '.' do drugiej tablicy bo może się zdarzyć że w txt bęndzie stać jedna koło drugiej , to samo się tyczy '-' i pamiętaj że '-'nie może być w środku tylko na początku czyli musi mieć indeks 0 i że '.' może być tylko jedna w drugiej tablicy więc zrób jakąś zmienną do sprawdzania liczby '.' które już są w tablicy drugiej .

0
  1. otwórz plik
  2. (pętla) dopóki z pliku udaje się wczytać liczbę dodaj ją do zbioru danych

Jak słusznie zauważyłaś ifstream służy do czytania plików
Do wczytania wartości z pliku do zmiennej użyj operatora >> np.

ifile >> variable;

To, czy wcztanie się powiodło sprawdzisz instrukcją if w ten sposób:

if (ifile)

można to sprawdzać "od razu" podczas próby wczytania wartości z pliku do zmiennej:

if (ifile >> variable)

Jako, że operacja będzie powtarzana możesz ten warunek umieścić w instrukcji while (pętla) zamiast instrukcji if

Jako zbiór danych użyj kontenera np. vector<double>, dane do takiego kontenera dodaje się metodą o nazwie push_back.

vector<double> data;
data.push_back(variable);
0

http://cpp0x.pl/kursy/Kurs-C++/Obsluga-plikow/305
Wczytujesz linijkę getline do sring'a np x, i zamieniasz na float tak:
float y = atof(x.c_str());

1 użytkowników online, w tym zalogowanych: 0, gości: 1