Hirdetés

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

  • tototos
    addikt

    Sziasztok valaki tudna esetleg segíteni hogy ebben mi lehet a hiba mert nem tudok rájönni!!

    #include<stdio.h>

    typedef struct{
    char nev[51];
    double kapacitas;
    }Pendrive;

    void beolvas(Pendrive *adat)
    {
    printf("Adja meg a nevet: ");
    gets(adat->nev);
    printf("Adja meg a kapacitast: ");
    scanf("%f", adat->kapacitas);
    }

    void nagyobb(Pendrive tomb[])
    {
    int i;

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

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

    }

    int main(void)
    {
    Pendrive tomb[2];
    int i;

    for(i = 0; i < 2; i++)
    {

    beolvas(&tomb(i));
    }
    // nagyobb(tomb);
    return 0;
    }

    É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