Codons maintenant notre premier programme !
On va faire le "jeu" du plus ou moins : celui-ci consiste à choisir aléatoirement un nombre entre un minimum et un maximum et à demander à l'utilisateur de taper un nombre jusqu'à qu'il trouve celui sélectionné (en lui donnant des indices).
Ce jeu a sûrement un vrai nom mais je ne le connais pas. Pour cela, comme il va y avoir un interaction avec l'utilisateur, on va utiliser la fonction
scanf(), qui permet de donner la main à l'utilisateur et de lire ce que tape ce dernier au clavier.
Voir son descriptif
ici.
L'idée du programme : le programme choisit un entier entre 0 et 100 et l'utilisateur doit le trouver en moins de coups possibles. Le programme n'a que 3 réponses possibles : plus, moins ou ok.
Avant de partir sur le code, réfléchissons à l'algorithme que l'on va utiliser. Il y a plusieurs écoles, je vous propose une solution : à vous de trouver mieux si vous le désirer.
On a besoin d'au moins 3 entiers : le nombre choisi par le programme, le nombre de l'utilisateur et un compteur. Comme on a vu que des choses simples, je mettrai en plus un entier qui fera office de booléen : 1 si l'utilisateur a trouvé, 0 sinon.
int compteur=0;
int entier_programme = 0;
int entier_utilisateur = 0;
int boolean = 0;
Ensuite on doit choisir un entier. Pour cela on utilisera la fonction
rand() et la fonction modulo notée %. On l'utilisera de cette manière :
entier_programme = rand()%100;
Cela signifie que l'on prend le reste entier dans la division euclidienne du nombre renvoyé par rand() divisé par 100. Comme vous pouvez le voir dans le
manuel de rand() : pour initialiser notre générateur, il faut utiliser srand() avec un paramètre. Nous utiliserons
time (NULL) pour spécifier que nous l'initialisation au début du monde : le 1 er janvier 1970. Si on ne le fait pas, notre valeur risque de ne jamais changer.
D'ailleurs, on peut noter que pour utiliser ces fonctions, il nous faut inclure stdlib.h comme ceci :
#include <stdlib.h>.
Puis, pour dialoguer avec l'utilisateur, nous utiliserons le couple printf() pour afficher un message à l'écran et scan() pour récupérer la valeur.
printf("Entrer une valeur : \n');
scanf("%i", &entier_utilisateur);
Pourquoi est-ce qu'il y a un "
&" devant entier_utilisateur ? Vous le comprendrez mieux avec l'explication sur les pointeurs, mais ici il faut placer la valeur entrée par l'utilisateur dans la case mémoire de la variable. On se sert donc de l'adresse (référence de la variable) pour savoir où stocker la donnée. Je ne m'étends pas sur ce sujet pour l'instant, on y reviendra.
Donc on a tout ce qu'il faut pour faire notre programme. Un peu d'algo :
Tant que boolean est égal à 0 alors
- Demandez et récupérez une valeur à l'utilisateur.
- La comparer avec la valeur de notre programme:
- Afficher le bon message.
- Modifier le booléan en cas de succès.
fin du tant que
Résultat :
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Declaration des variables
int compteur=0;
int entier_programme = 0;
int entier_utilisateur = 0;
int boolean = 0;
// Initialisation du generateur de nb aleatoire
srand(time(NULL));
entier_programme = rand() % 100;
while( boolean != 1 )
{
printf("Entrer un entier : \n");
scanf("%i",&entier_utilisateur);
if(entier_utilisateur < entier_programme)
{
printf("Plus \n");
}
else
{
if( entier_utilisateur > entier_programme)
{
printf("Moins \n");
}
else
{
// Ce n'est ni plus grand ni plus petit, c'est donc egale
printf("Congratz !\n");
boolean = 1;
}
}
}
printf("Entier a trouver : %i \n", entier_programme);
return 1;
}