Chtělo by to ošetřit chybný vstup, může se stát že uživatel zadá číslo mimo limit nebo chybný znak. Funkce scanf je na zadání písmena místo čísla dost alergická, je potřeba kontrolovat návratovou hodnotu (počet správně načtených položek) a chybný znak odstranit z bufferu, než to zkusíš znovu.
A také není dobré cpát konstanty přímo do kódu, říká se že v programu se smí vyskytovat jen čísla 0 a 1, a ta ještě jen v krajním případě! Když tě třeba napadne že bys chtěl hádat čísla od 1 do 100, budeš muset prohledat celý zdroják a všechny desítky přepsat ručně, což u většího programu může trvat dost dlouho, a zaručeně některou zapomeneš, nebo naopak přepíšeš desítku co měla jiný účel. Když si konstanty nadefinuješ předem, stačí změnit jediné číslo na začátku, a máš úplně nový program

Kód: Vybrat vše
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MIN 1
#define MAX 10
int main(void)
{
int x,u;
srand(time(NULL));
x=rand()%(MAX-MIN+1)+MIN;
do {
do {
printf("Hádej číslo (%d-%d): ",MIN,MAX);
while (!scanf("%d",&u))
getchar();
} while (u<MIN || u>MAX);
if (u<x)
printf("Málo!\n");
else
if (u>x)
printf("Moc!\n");
} while (u!=x);
printf("Zásah!\n");
getchar();
return 0;
}
Zkus si nastavit MIN -10
