Ogolnie funkcja inicjalizuje liste studentow danymi wczytanymi z pliku oraz srednia obliczona dla danego studenta.
bool wczytaj(const string nazwa_pliku, Lista &lista)
{
bool ok = true, tab = false;
ifstream in(nazwa_pliku.c_str()); // daje możliwość przekazania tekstu do funkcji, która jako argument przyjmuje wartość char * (czyli razem z bialymi znakami )
if(!in)
{
cerr << "Nie mozna otworzyc pliku!" << endl;
return false;
}
else
{
if(!in.good()) ok = false; else /*Dlaczego tutaj jest przypisany false// wczesniej zainicjalizowana zmienna byla przeciez true czemu nie moglo tak zostac? Lub uzycie zmiennej tab zamiast ok*/
in >> lista.przedmiot;
if(!in.good()) ok = false; else
in >> lista.liczba;
if (lista.liczba > 0)
{
lista.lista = new Student[lista.liczba];
tab = true; /*dlaczego tu jest przypisywane true // wczesniej zainicjalizowana zmienna byla przeciez false czemu nie moglo tak zostac? */
for(unsigned int i = 0; i < lista.liczba; i++)
{
if(!in.good()) ok = false; else
in >> lista.lista[i].nazwisko;
if(!in.good()) ok = false; else
in >> lista.lista[i].imie;
if(!in.good()) ok = false; else
in >> lista.lista[i].nr_indeksu;
if(!in.good()) ok = false; else
in >> lista.lista[i].t;
if(!in.good()) ok = false; else
in >> lista.lista[i].p;
lista.lista[i].srednia = srednia(lista.lista[i].t, lista.lista[i].p);
}
}
}
in.close();
if (!ok)
{
if(tab)
usun(lista);
return false;
}
else
return true;
}