Hirdetés

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

  • buherton
    őstag

    Ü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.

    Kiegészítés (#4195) dabadab hsz-re.

    1. feleslegesek a typecast-ok és a jövőben kerüld ezeket, mert könnyen kerülhetsz olyan helyzetbe, amikor jön a fej vakarás, mert nem fut a kód, mint például:

    void foo(long *bar)
    {
    *bar = 23424234;
    }

    int main(void)
    {
    char bar;
    foo(&bar);
    return 0;
    }

    2. formázás: ez az adott sor végére rakni a { nem C-szerű formázás, hanem tán a Java-ból jön, és ajánlott ott használni. Továbbá próbáld kialakítani a saját stílusod, és tartsd magad ahhoz, mert könnyebb neked és másnak is olvasni a kódod.

    int* foo; helyett int *foo; mert ebből is lehetnek gondok, mint int* foo, bar; és két pointer helyett lesz egy pointer és egy változó, és nincs olyan típus, hogy int pointer, hanem int-re mutató pointer van csak.

    3. óvatosan az ilyenekkel:
    for(i=0;i<n;i++)
    if (palyak[i]==0)
    {
    nemsi_index[a]=i;
    a++;
    }

    Ugyanis nem feltétlenül portable a kód. Sajnos nem mindegyik fogadja el így ezt a formát. Az ilyen formával már kevésbé lehet gond:

    for(...)
    {
    if(...)
    ...;

    ...;
    }

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