Hej witam wszystkich. Mam taki problem. Mam zrobić program który odczyta dane z pliku, a następnie wczyta je do nowej struktury, posegreguje i wyświetli imiona taych który zaplacili ponad 10ty a dopiero potem tych którzy zapłacili mniej.
Format pliku .txt
wygląd
[x - liczba osób
imie
wpłata
imie
wplata
... ]
//Zadanie59.cpp
#include<iostream>
#include<fstream>
using namespace std;
struct sponsorzy
{
char imie[40];
int wplata;
};
int main()
{
char filename[30];
fstream File;
cout << "Podaj nazwe pliku z danymi: ";
cin.getline(filename, 30);
File.open(filename); // polaczenie inFile z plikiem filename
if (!File.is_open())
{
cout << "Otwarcie pliku nie powidoło sie";
exit(EXIT_FAILURE);
};
cin.clear();
int liczbawplacajacych;
File >> liczbawplacajacych;
sponsorzy *ludzie = new sponsorzy[liczbawplacajacych];
char odczyt[40];
int i = 0;
while(File.good(), File.getline(odczyt, 40))
{
if(isalpha(odczyt[0]))
{
memcpy ((*(ludzie+i)).imie, odczyt, strlen(odczyt+1));
}
else if(isdigit(odczyt[0]))
{
strncpy (odczyt, (*(ludzie+i)).wplata, sizeof(odczyt)); // tu mam problem i nie wiem jak rozwiązać.
}
else
continue;
i++;
};
if (liczbawplacajacych == 0)
cout << "Brak";
else
{
cout << "Nasi wspaniali sponsorzy: " << endl;
for (int j = 0; j < liczbawplacajacych; j++)
{
if (((*(ludzie+j)).wplata) > 10000)
cout << (*(ludzie+j)).imie;
}
cout << endl <<"Nasi sponsorzy: " << endl;
for (int k = 0; k < liczbawplacajacych; k++)
{
if (((*(ludzie+k)).wplata) <= 10000)
cout << (*(ludzie+k)).imie;
}
};
system("pause");
return 0;
}