Hejo. Na wstepie chcialbym zaznaczyc ze JESZCZE nie znam klas i nawet nie biore pod uwage rozwiazan korzystajacych w duzej mierze z klas. (ta wiem ze c++ to same klasy). Znam troche C i zaczalem czytac ksiaże o c++, rozwiazuje zadania z tej ksiazki i staram sie wykorzystywać wiedzę uzyskana z tej ksiazki. Jak na razie mam podejscie "strukturalne" do c++ i probuje pisac programy nie uzywajac klas. oto tresc zadania: "wczytywac z pliku txt plik w postaci:
liczba_X
tekst moze byc tu duzo wyrazow [nazwisko]
liczba_i [liczba typu double]
...
przy czym liczba_X okresla ile jest par [nazwisko] + [double]. umieszczam swoj kod:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct struktura {
string nazwisko;
double kwota;
};
int main()
{
string nazwa_pliku = "Dane.txt";
int rozmiar_tablicy = 0;
ifstream inFile;
inFile.open(nazwa_pliku);
if (!inFile.is_open())
{
cout << "nie ma pliku\n";
exit(EXIT_FAILURE);
}
inFile >> rozmiar_tablicy;
double *tablica_double = new double[rozmiar_tablicy];
string *tablica_string = new string[rozmiar_tablicy];
int i = 0;
while (inFile.good())
{
getline(inFile, tablica_string[i]);
inFile >> tablica_double[i];
i++;
}
if (inFile.eof())
cout << "Koniec pliku.\n";
else if (inFile.fail())
cout << "Wczytywanie danych przerwane - błąd.\n";
else
cout << "Wczytywanie danych przerwane, przyczyna nieznana.\n";
for (int j = 0; j < rozmiar_tablicy; j++)
cout << tablica_string[j] << " <-> " << tablica_double[j] << endl;
system("pause");
return 0;
}
chce najpierw wczytac pierwsza liczbe z pliku i dzieki niej zalokowac pamiec na tablice. w C uzywało sie wskaznikow typu FILE. gdyby to bylo C to po wczytaniu liczby_X wskaznik bylby za nia i mozna byłoby wczytywać juz pary. niestety moj kod nie działa i prosiłym o pomoc. dzieki