Hirdetés

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

  • Jester01
    veterán

    Sziasztok,

    Egy kis segítségre lenne szükségem ...
    Nemrég kezdtem tanulni a C nyelvet - kaptam most egy házit ami úgy nézem kifog rajtam ...

    #include <stdio.h>

    int main(){

    char kigyok[100][100];
    int hosszak[100];
    int hossz, index, Edik, legnagyobbHossz, EAdik;

    index = 0;
    Edik = 1;
    legnagyobbHossz = 0;
    EAdik = 0;

    do {
    printf("%d. kigyo neve? ", Edik);
    scanf("%s", kigyok[index]);
    if ( kigyok[index] != '*') {
    printf("%s hossza? ", kigyok[index]);
    scanf("%d", &hosszak[index]);
    if ( legnagyobbHossz < hosszak[index]){
    legnagyobbHossz = hosszak[index];
    EAdik = index;
    }
    }
    index++;
    Edik++;
    } while ( kigyok[index] != '*');

    printf("A legnagyobb kigyo %s, aki %d meteres", kigyok[EAdik], hosszak[EAdik]);

    return 0;
    }

    a while -ban lévő feltétel nem tetszik neki... - valaki tudna segíteni ?
    // a feladatban az van megadva hogy amikor a névnek csillagot adunk meg akkor befejezi a beolvasást és kiírja a leghoszabb kigyót és annak hosszát ... ( ha több egyorma hosszú van akkor azt amelyiket előbb írtam be ... //

    A segítséget előre is köszönöm!

    A kigyok az kétdimenziós karakter tömb, vagy ha úgy tetszik egydimenziós string tömb. Ezért nem jó a kigyok[index] != '*', hiszen a bal oldal az char* a jobb oldal meg char. Egy lehetséges megoldás, ha a jobb oldalból is stringet csinálsz, és a megfelelő összehasonlítást alkalmazod: strcmp(kigyok[index], "*") != 0

    MOD: Továbbá a ciklus vége előtt már növeled az index értékét, így a while feltétel már másik elemet vizsgál. Egyszerűbb lenne, ha a ciklusmagban lévő if feltétel break használatával kilépne a ciklusból, ami amúgy végtelen lenne.

    MOD #2: ja és ha csak a leghosszabb kígyót kell kiíratni, akkor teljesen fölösleges mindet eltárolni egy tömbben.

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