• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przekazanie wskaźnika na strukturę - niezgodność typów

0 głosów
467 wizyt
pytanie zadane 4 października 2018 w C i C++ przez estewui Początkujący (270 p.)
struct Punkt {
    string nazwa;
    float odleglosc;
};
 
void zamien (struct Punkt * a, struct Punkt * b) {
    struct Punkt temp;
    temp.nazwa = a->nazwa;
    temp.odleglosc = a->odleglosc;
 
    a->nazwa = b->nazwa;
    a->odleglosc = b->odleglosc;
 
    b->nazwa = temp.nazwa;
    b->odleglosc = temp.odleglosc;
 
}
 
 
void sortuj (struct Punkt * tab, int ile) {
    int i, j;
    float m;
    for (i=0; i<ile-1; i++) {
        m = i;
        for (j=i+1; j<ile; j++) {
            if (tab[j].odleglosc < tab[m].odleglosc) m = j;
        }
        zamien(&tab[i],&tab[m]);
    }
}

Mam takie dwie funkcje i chcę posortować tablicę struktur. Niestety w ostatniej linijce jest błąd, kompilator informuje: "In function 'void sortuj(Punkt*, int)':
error: invalid types 'Punkt*[float]' for array subscript|"

A wydaje mi się, że jest w porządku (do funkcji zamien mam przekazać wskaźniki na strukturę i je przekazuję). O co może chodzić?

4 odpowiedzi

+1 głos
odpowiedź 4 października 2018 przez draghan VIP (106,230 p.)
wybrane 4 października 2018 przez estewui
 
Najlepsza

invalid types 'Punkt*[float]' for array subscript|

Nie możesz indeksować tablicy floatem. :) Zrób cast na int, jeśli 'm' musi być floatem:

zamien(&tab[i],&tab[(int)m]);

 

+1 głos
odpowiedź 4 października 2018 przez RafalS VIP (122,780 p.)
float m;
...
tab[m]

Nie można indeksować tablicy floatem :P

0 głosów
odpowiedź 4 października 2018 przez profesorek96 Szeryf (91,420 p.)
Masz błąd w sortowaniu bombelkowym. Dwa fory w sobie to się zgadza jednak czemu funkcja zamień jest na końcu a nie wewnątrz tego Iga który wykrywa co ma z czym zamienić ?
komentarz 4 października 2018 przez estewui Początkujący (270 p.)
To nie jest sortowanie bąbelkowe, tylko sortowanie przez wybieranie :) znajduje najmniejszą wartość w tablicy daje na indeks 0, potem kolejną najmniejszą na indeks 1 itd.
komentarz 4 października 2018 przez profesorek96 Szeryf (91,420 p.)
Aaa ok to zwracam honor.
0 głosów
odpowiedź 4 października 2018 przez estewui Początkujący (270 p.)
Haha, głupi błąd z mojej strony. Brakło trzeźwego spojrzenia na sytuację.
Dziękuję bardzo :D

Podobne pytania

0 głosów
3 odpowiedzi 518 wizyt
pytanie zadane 3 lutego 2016 w PHP przez gryzon Początkujący (480 p.)
0 głosów
2 odpowiedzi 592 wizyt
0 głosów
3 odpowiedzi 2,752 wizyt
pytanie zadane 5 września 2019 w C i C++ przez Vitall Początkujący (400 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,323 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...