Sortowanie już działa (dzięki za pomoc chłopaki:)), ale moim zadaniem jest jeszcze zaimplementowanie funkcji, dzięki której będzie można dodać nowe stacje do bazy stacji. Mój kod przed mainem wygląda tak:
struct sprzedarz {
char *stacja;
int odleglosc;
float cena;
};
struct sprzedarz **stacje;
W dalszej części kodu w jednej z funkcji mam zaalokowaną dynamicznie tablicę struktur:
stacje = (struct sprzedarz **)malloc(ilosc_stacji*sizeof(int));
for(i=0;i<ilosc_stacji;i++)
stacje[i]=(struct sprzedarz *)malloc(sizeof(struct sprzedarz));
stacje[0]->stacja = "Warszawa Wilenska";
stacje[0]->odleglosc = 0;
stacje[0]->cena = 0.0;
stacje[1]->stacja = "Zabki";
stacje[1]->odleglosc = 7;
stacje[1]->cena = 1.9;
stacje[2]->stacja = "Zielonka";
stacje[2]->odleglosc = 10;
stacje[2]->cena = 3.1;
stacje[3]->stacja = "Kobylka Ossow";
stacje[3]->odleglosc = 13;
stacje[3]->cena = 4.3;
stacje[4]->stacja = "Kobylka";
stacje[4]->odleglosc = 15;
stacje[4]->cena = 5.5;
stacje[5]->stacja = "Wolomin";
stacje[5]->odleglosc = 17;
stacje[5]->cena = 6.7;
stacje[6]->stacja = "Wolomin Sloneczna";
stacje[6]->odleglosc = 19;
stacje[6]->cena = 7.9;
stacje[7]->stacja = "Zagosciniec";
stacje[7]->odleglosc = 21;
stacje[7]->cena = 9.1;
stacje[8]->stacja = "Dobczyn";
stacje[8]->odleglosc = 24;
stacje[8]->cena = 10.4;
stacje[9]->stacja = "Klembow";
stacje[9]->odleglosc = 27;
stacje[9]->cena = 11.7;
stacje[10]->stacja = "Jasienica Mazowiecka";
stacje[10]->odleglosc = 31;
stacje[10]->cena = 13.2;
stacje[11]->stacja = "Tluszcz";
stacje[11]->odleglosc = 34;
stacje[11]->cena = 14.5;
Kłopot w tym, że przy takiej implementacji dodawanie nowych stacji jest niemożliwe, gdyż za każdym użyciem funkcji w której jest powyższy kod nadpisze mi nowo dodane stacje. Aby uporać się z tym problemem chciałem powyższy kod z alokacją pamięci oraz przypisaniem domyślnych stacji przed maina w ten sposób:
struct sprzedarz {
char *stacja;
int odleglosc;
float cena;
} **stacje;
stacje = (struct sprzedarz **)malloc(ilosc_stacji*sizeof(int));
for(i=0;i<ilosc_stacji;i++)
stacje[i]=(struct sprzedarz *)malloc(sizeof(struct sprzedarz));
stacje[0]->stacja = "Warszawa Wilenska";
stacje[0]->odleglosc = 0;
stacje[0]->cena = 0.0;
stacje[1]->stacja = "Zabki";
stacje[1]->odleglosc = 7;
stacje[1]->cena = 1.9;
stacje[2]->stacja = "Zielonka";
stacje[2]->odleglosc = 10;
stacje[2]->cena = 3.1;
stacje[3]->stacja = "Kobylka Ossow";
stacje[3]->odleglosc = 13;
stacje[3]->cena = 4.3;
stacje[4]->stacja = "Kobylka";
stacje[4]->odleglosc = 15;
stacje[4]->cena = 5.5;
stacje[5]->stacja = "Wolomin";
stacje[5]->odleglosc = 17;
stacje[5]->cena = 6.7;
stacje[6]->stacja = "Wolomin Sloneczna";
stacje[6]->odleglosc = 19;
stacje[6]->cena = 7.9;
stacje[7]->stacja = "Zagosciniec";
stacje[7]->odleglosc = 21;
stacje[7]->cena = 9.1;
stacje[8]->stacja = "Dobczyn";
stacje[8]->odleglosc = 24;
stacje[8]->cena = 10.4;
stacje[9]->stacja = "Klembow";
stacje[9]->odleglosc = 27;
stacje[9]->cena = 11.7;
stacje[10]->stacja = "Jasienica Mazowiecka";
stacje[10]->odleglosc = 31;
stacje[10]->cena = 13.2;
stacje[11]->stacja = "Tluszcz";
stacje[11]->odleglosc = 34;
stacje[11]->cena = 14.5;
Niestety o ile przy implementacji przedstawionej przeze mnie na początku kompilator nie wyrzuca błędów to przy powyższym wywala litanię:)
"data definition has no type or storage class"
"conflicting types for 'stacje'"
"initialization makes integer from pointer without cast"
"initializer element is not constant"
Czy można w ogóle utworzyć globalną dynamiczną tablicę struktur i przypisać jej domyślne wartości? Dopiero raczkuję w C więc proszę o wyrozumiałość bo domyślam się, że odpowiedzi są banalne, a ja zadaję głupie pytania:P