Keresés

Új hozzászólás Aktív témák

  • Karma

    félisten

    válasz izsom #4799 üzenetére

    A hiba ott kezdődik, hogy nem használtad a Programkód gombot a forrás beszúrásakor, és így amellett, hogy nehezen olvasható, a [i]-kből mindenféle sima zárójel és dölt írás lett. Erre figyelj oda legközelebb.

    Maga a kód rengeteg sebből vérzik, jelölöm amit ránézésre látok:

    scanf("%f", &adat->kapacitas); -- mivel a double érték skalár, a scanf függvénynek a címét kell átadnod, ki kell rakni a & operátort hogy ne robbanjon.

    for(i = 0; i < (strlen(tomb)-1); i++) -- strlent nem szabad ilyen tömbre használni, csak és kizárólag nullterminált (azaz C) stringekre! A függvényedet úgy kéne módosítanod, hogy a darabszámot is átadd paraméterként.

    printf("%i",tomb[i].kapacitas); -- ha egyszer double az érték, miért egészként akarod kiíratni?

    De egyébként például a középsőt a fordító is mondja neked, hiszen lefordíthatatlan; miért nem nézed a hibákat?

    Egy kicsit lemaradtam az írással :)

  • tototos

    addikt

    válasz izsom #4799 üzenetére

    Én több hibát is látok. Először is ha egy tömb elemét akarod címezni akkor nem () kell hanem []
    Valamint az strlen nem fogja megmondani neked a tömb méretét, csak egy string hosszát. Tömb méretet belekódolod a programba, mivel itt statikus foglalásról van szó teljesen járható út.
    Másik hiba hogy az if után ha nem blokkosítod az utasításokat, akkor az összes kapacitást ki fogja írni, mert az if csak a névre lesz hatásra.

    main fv:
    beolvas(&tomb(i)); helyett beolvas(&tomb);

    nagyobb fv:
    void nagyobb(Pendrive *tomb, int size)
    {
    int i;

    for(i = 0; i < size; i++)
    {
    if(tomb(i).kapacitas > 2)
    {

    printf("%s",tomb(i).nev);
    printf("%i",tomb(i).kapacitas);
    }
    }
    }

Új hozzászólás Aktív témák

Hirdetés