Hirdetés

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

  • dudika10

    veterán

    Üdv!

    Egy hozzáértő számára szerintem egyszerű kérdésem volna. Elkezdtem ismerkedni a C-vel (MS Virtual Studio 2010 segítségével), és a bináris keresésre épülő egyszerű játékot szeretnék csinálni.

    while(x!=1)
    {
    tipp=((min + max )/a);
    printf("Ez a szam a %d ? \n", tipp );
    scanf("%c", &valasz);

    if(valasz =='=')
    x=1;

    else if(valasz == '<')
    min=tipp;

    else if(valasz == '>')
    max=tipp;

    else if(valasz != '>' && valasz != '<' && valasz != '=' )
    printf("Kerlek valaszolj, vagy nem tudok tovabblepni! \n");

    /* Nem működik jól. A scanf után úgy veszi, mintha nem történt volna semmi, visszaugrik a ciklus elejére, végrehajtja a printf-t, és újra a scanf jön. */
    }

    Ahogy az a megjegyzésnél is olvasható, a program majdnem jól működik, de:
    Megteszi az első tippet, majd megvárja, hogy válaszoljak (kisebb, nagyobb, egyenlő az általam gondolt szám). Eddig jó. De most jön a de. Megadom a választ, nyomok egy entert, majd kiírja az új tippet, jönne egy scanf, de azt mondja, hogy nem adtam meg tippet, és az utolsó else if-re ugrik, majd újra kiírja a tippet, jön a scanf és itt már megvárja, amíg beviszem az adott karaktert.

    Valaki meg tudná mondani, hogy hol a hiba? :B

    szerk.: azt elfelejtettem leírni, hogyha az utolsó else if nincs, akkor scanf után a scanf-re ugrik. Az utolsó else if pont ezért (is) került bele, hogy megnézzem, hogy miért ugrik oda, és a működésből arra következtettem hogy azért, mert az első beolvasást üresnek veszi.

    Előre is köszönöm a választ! :R

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