main.cpp
#include "strukt.h"
using namespace std;
double str2double(std::string sstring)
{
double wynik;
stringstream ss;
ss<
ss>>wynik;
return wynik;
}
int main()
{
std::string line,data,temp;
unsigned int i=0,j=0,licznik=1,rozmiar=0,rozmiar2=0;
Stud *tablicaStudentow=0;
cout<<"Program - zadanie 10"<
fstream dane;
/*------------------------*/
dane.open("dane.txt");
while(!dane.eof()) //przegladam raz plik
{ //pozwoli mi to poznac
getline(dane,line); //ilosc linii w pliku
rozmiar++; //potrzebne do dynamicznej
} //alokacji tablicy
rozmiar2=rozmiar;
dane.close();
dane.clear();
tablicaStudentow=new Stud[rozmiar];
rozmiar=0; //zerowanie tej zmiennej
//przyda sie do pozniejszego wpisywania do tablicy danych ze struktury
/*------------------------*/
dane.open("dane.txt");
while(!dane.eof())
{
getline(dane,line);
j=licznik=0;
for(i=0;i
{
if(line[i]==';')
{
if(licznik==0)
{
temp=line.substr(j,i-j);
for(unsigned int a=0;a
{
tablicaStudentow[rozmiar].Imie[a]=temp[a];
}
licznik++;
j=i+1;
}
else if(licznik==1)
{
temp=line.substr(j,i-j);
for(unsigned int a=0;a
{
tablicaStudentow[rozmiar].Nazwisko[a]=temp[a];
}
licznik++;
j=i+1;
}
else if(licznik==2)
{
tablicaStudentow[rozmiar].DataUr.data=line.substr(j,i-j);
licznik++;
j=i+1;
}
else if(licznik==3)
{
temp=line.substr(j,i-j);
tablicaStudentow[rozmiar].Srednia=str2double(temp);
}
}
}
//zwiekszenie zmiennej sterujacej indeksem w tablicaStudentow//
rozmiar++;
//-+-+-+-+-+-+-+-+-+//
}
dane.clear();
dane.close();
//KONIEC BLOKU WCZYTYWANIA DANYCH Z PLIKU
//DEKLERACJA TRZECH TABLIC WSKAZNIKOW
Stud *tablica1[rozmiar2];
Stud *tablica2[rozmiar2];
Stud *tablica3[rozmiar2];
//KONIEC DEKLARACJI TRZECH TABLIC WSKAZNIKOW
tablica1[0]=&tablicaStudentow[0];
cout<Imie<
tablica1[0]->Imie[2]='K'; //DZIALANIE NIEPOZADANE POJAWIA SIE TUTAJ
cout<
return 0;
}
strukt.h
#ifndef STRUKT_H
#define STRUKT_H
#include
#include
#include
#include
struct Data
{
std::string data;
};
struct Stud
{
char Imie[14];
char Nazwisko[28];
Data DataUr;
float Srednia;
Stud();
~Stud();
};
#endif // STRUKT_H
cześć polecenie, gdzie mam problem
Dane grupy studenckiej
powinny być wczytywane z pliku dyskowego (tekstowego lub binarnego) do dynamicznie
zaalokowanej tablicy struktur. Utworzyć trzy tablice wskaźników do tych struktur.
nawiązując do tego co wyczytałem na http://www.mif.pg.gda.pl/homepages/sylas/students/alg/c/7.htm, same tablice wskaźników utworzyłem dobrze, wcześniej miałem alokować dynamicznie tablicę na obiekty tej struktury
wczytywane z pliku dyskowego (tekstowego lub binarnego) do dynamicznie
zaalokowanej tablicy struktur.
co zrobiłem jak poznałem ile mam linii w pliku, tj. ilu studentów no ale pojawił się problem… bo jak utworzyłem te tablice wskaźników, to muszę przypisać do każdej komórki tablica1, adres odpowiedniej struktury z tablicaStudentow, czy mam rację ? jeśli tak to ten kawałek kodu
tablica1[0]=&tablicaStudentow[0];
powinien zrobić to dla pierwszych elementów
no tylko potem jak widać te dwie linijki, co mnie dziwi zmiana w tablica1, powoduje zmianę w tablicaStudentow… i teraz potem mam w poleceniu sortowania tych tablic wskaźników, no to jak posertuję tablica1, to wpłynie to na tablicaStudentow a tym samym na tablica2 i tablica3, tak ?
no i to jest mój problem, chyba że źle rozumiem polecenie i faktycznie tak ma być