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

crash40
Level 2.5
Level 2.5
Příspěvky: 344
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

jazyk c min a max cislo

Příspěvekod crash40 » 08 lis 2011 12:36

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;
}

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: jazyk c min a max cislo

Příspěvekod faraon » 08 lis 2011 16:22

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: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: jazyk c min a max cislo

Příspěvekod crash40 » 08 lis 2011 19:43

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: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: jazyk c min a max cislo

Příspěvekod faraon » 08 lis 2011 20:32

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)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Virtuální telefonní číslo a nebezpečí
    od Klisnic » 08 črc 2024 20:07 » v Vše ostatní (Off topic)
    2
    2912
    od atari Zobrazit poslední příspěvek
    08 črc 2024 23:02

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host