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;
}
jazyk c min a max cislo
Re: jazyk c min a max cislo
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?
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)
(pravil K. H. Borovský o cenzuře internetu)
Re: jazyk c min a max cislo
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
Re: jazyk c min a max cislo
O třídění asi nepůjde, to je přesný opak toho co chceš 
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

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)
(pravil K. H. Borovský o cenzuře internetu)
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 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