jazyk c min a max cislo

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
crash40
Level 2.5
Level 2.5
Příspěvky: 344
Registrován: 11 říj 2008 10:54

jazyk c min a max cislo

Příspěvek od crash40 »

cau nevite kde mam chybu v kodu. Chci bypsat nejmensi a nejvetsi cislo ze zadane rady.

int main()
{
int cislo,max,min;
while (scanf("%d", &cislo) && cislo != 0){
if (cislo > max)
max = cislo;
else if (cislo < min)
min = cislo;
}

printf("%d--%d", min, max);

return 0;
}
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: jazyk c min a max cislo

Příspěvek od faraon »

Chyba je ta, že na počátku nemáš v proměnných min a max přiřazenou žádnou hodnotu, dokonce jsi udělal jednu z největších programátorských chyb, a to že používáš neinicializovanou proměnnou! Zkus si vypsat jejich obsah hned po spuštění programu, ještě než začneš zadávat čísla...

Máš dvě možnosti. Buď amatérsky hned na počátku zadat nějaké extrémní hodnoty, například
int cislo,max=-999999999,min=999999999;
a doufat že žádnou z nich nepřekročíš, a nebo se zamyslet programátorsky a použít první zadané číslo, které nejdřív vložíš do obou proměnných a teprve potom začít porovnávat. V druhém případě budeš muset tu smyčku trochu přeuspořádat.

Jak má fungovat to while()? To co tam máš se ukončí buď při zadání nuly nebo při neplatném vstupu, kdy scanf() nedokáže načíst číslo a vrátí nulu (počet načtených položek) jako chybu, je to určitě to co jsi chtěl?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
crash40
Level 2.5
Level 2.5
Příspěvky: 344
Registrován: 11 říj 2008 10:54

Re: jazyk c min a max cislo

Příspěvek od crash40 »

a jeste jeden problem lamu si tam dim dlouho hlavu jak napisu cykly aby mi setridily cisla 0,1,2,3,4 jako 0,1,2 0,2,3 0,3,4 proste aby na prvnim myste bylo cislo 1 pak 2 pak 3 ja si lamu hlavu s tou 0 jak ti tam pak dostat
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: jazyk c min a max cislo

Příspěvek od faraon »

O třídění asi nepůjde, to je přesný opak toho co chceš ;-)

Kód: Vybrat vše

int main(void)
    {
    int i,j,pole[]={0,1,2,3,4,5,6,7,8,9};

    for (i=1;i<=3;++i) /* počáteční prvek */
        {
        printf("%d",pole[0]);
        for (j=0;j<=1;++j) /* kolikátý prvek */
            printf(",%d",pole[i+j]);
        putchar('\n');
        }

    return 0;
    }

Kód: Vybrat vše

0,1,2
0,2,3
0,3,4
Zkus si změnit čísla v deklaraci toho pole, místo 0-9 tam napsat jiná, třeba pozadu. Také si zkus změnit konečné hodnoty u smyček for, v podmínkách i<=3 a j<=1
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Odpovědět

Zpět na „Programování a tvorba webu“