Hirdetés

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

  • dabadab
    titán

    Üdv!

    Érdekelne, hogy a kódom mennyire "elegáns" megoldás a következő egyszerű kis feladatra:
    Egy hójelentés N sípályán mért hóréteget tartalmazza.
    Készíts programot, amely beolvassa a sípályák számát (1≤N≤20) és az egyes pályákon a hóréteg vastagságát (0≤V(i)≤100), majd
    A. megadja, hogy melyik sípályán a legnagyobb a hóréteg;
    B. megad egy sípályát, ahol a hóréteg legalább 100 cm vastag;
    C. megadja azokat a sípályákat, ahol nem lehet síelni (azaz a hóréteg vastagsága 0)!

    1-20,0-100 és egyéb hülyebiztos vizsgálatokkal most nem töltöttem az időt.

    #include <stdio.h>
    #include <stdlib.h>

    int main(){

    int i,n,a=0;
    int* palyak;
    int maxi=0;
    int leg100=-1;
    int nemsi=0;
    int* nemsi_index;

    printf("Palyak szama: ");
    scanf("%d",&n);

    palyak=(int*)malloc(sizeof(int)*n);

    for(i=0;i<n;i++){
    printf("%d. palya: ",i+1);
    scanf("%d",&palyak[i]);
    if (palyak[i]>palyak[maxi]) maxi=i;
    if (palyak[i]>=100 && leg100==-1) leg100=i;
    if (palyak[i]==0) nemsi++;
    }

    nemsi_index=(int*)malloc(sizeof(int)*nemsi);

    for(i=0;i<n;i++)
    if (palyak[i]==0){
    nemsi_index[a]=i;
    a++;
    }

    printf("\nLegnagyobb: %d\n",maxi+1);
    printf("Van 100 cm ho: %d\n",leg100+1);
    printf("Nem lehet sielni %d palyan:",nemsi);
    for(i=0;i<nemsi;i++){
    printf(" %d",nemsi_index[i]+1);
    }

    free(palyak);
    free(nemsi_index);

    return 0;
    }

    Hülyén hangzik, de tényleg erre mennek rá, hogy mennyire úri. :DDD

    (#4192) aAron_: Én innen szedtem le a keybindert, az minden ilyet megold.

    Par dolog:

    0. Az egesz cuccban egy darab komment sincs, pedig azt erdemes gyakorolni, mert kulon tudomany.

    1. "magic value"-ket a kodba irni nem tul jo gyakorlat, jobb konstanskent kezelni oket, illetve C-ben makrokent, szoval "#define MIN100_NOT_FOUND -1"

    2. A free()-ket erdemes pont forditott sorrendben meghivni, mint a malloc()-ot, egyreszt, mert ugy maradnak meg szepen a blokkok, masreszt meg lehet, hogy egy kesobb malloc()-olt strukturaban egy pointer egy elozoleg lefoglalt memoriateruletre mutat - es ha az elso free()-zed, a masodikrol meg azt gondolod, hogy az meg ervenyes adatokat tartalmaz, abbol baj lesz.

    3. A valtozoneveket (konstansokat, makrokat, file-okat, kommenteket) angolul tessek irni.

    4. A nemsi_index teljesen felesleges. Lehetne mondani, hogy azert van igy, hogy meglegyen a funkcionalis tagolas (beolvasas, feldolgozas, kiiras), de ez egyebkent sincs meg (amire teljesen elfogadhato magyarazat, hogy igy hatekonyabb a kod - leszamitva ezt a franya nemsi_indexet).

    5. Ha megis a tagolas mellett dontenel, akkor erdemes lenne azt harom fuggvenybe kirakni.

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