Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C] - scanf + malloc dla tablicy struktur

kondini123 30 Nov 2015 21:10 804 6
  • #1
    kondini123
    Level 2  
    Mam problem z dynamicznym zaalokowaniem pamięci dla tablicy struktur, przy użyciu malloc. Próbowałem na kilka sposobów, ale najczęsciej kompilator wywala błąd "variable sized object may not be initialized".
    Code: c
    Log in, to see the code

    Chodzi o zadklarowanie tablicy struct Punkt punkty[ile].
  • #3
    kondini123
    Level 2  
    Kompiluje się, ale wtedy funkcja srodkowy_punkt przekazuje złą liczbę punktów, a poza tym nie liczy się średnia w takim wypadku.
  • #4
    -psiak-
    Level 32  
    kondini123 wrote:
    Kompiluje się, ale wtedy funkcja srodkowy_punkt przekazuje złą liczbę punktów, a poza tym nie liczy się średnia w takim wypadku.
    Bo sizeof dla wskaźnika daje rozmiar wskaźnika.

    Tak dużo drobnego syfu że postanowiłem przerobić:
    Code: c
    Log in, to see the code
    Jak nie rozumiesz czemu tak jak zmieniłem jest lepiej - to pytaj.
  • #6
    kondini123
    Level 2  
    To nie jest generalnie moje, dostałem taki program na laboratoria i miałem zrobić w nim tylko parę poprawek, a jedną z nich właśnie była zmiana alokacji pamięci dla tablicy struktur. O ile cenię sobie chęć przerobienia go na lepszy i prostszy, ale chodziło tylko o tę kosmetyczną poprawkę. Poza tym po skompilowaniu Twojego kodu nie wyświetla średniej, która jednak musi być zawarta jako wynik działania programu.

    Dodano po 2 [minuty]:

    michcior rzeczywiście, w sumie nie wiem, czemu nie wpadłem na to od razu :)

    Dodano po 5 [minuty]:

    Po zmienieniu wartości z sizeof(punkty)/8 na ile wszystko zadziałało dobrze, także temat do zamknięcia i dziękuję za pomoc :)
  • #7
    -psiak-
    Level 32  
    kondini123 wrote:
    Poza tym po skompilowaniu Twojego kodu nie wyświetla średniej, która jednak musi być zawarta jako wynik działania programu.
    Wprowadź małą ilość, np 2 to zobaczysz że wypisze 3 punkty.

    http://ideone.com/VZ526V Pierwszy punkt wypisał się w wierszu z pytaniem, ostatni punkt to średnia.