Bonsoir tout le monde !
j'espere que vous allez bien ! je suis une debutante en programmation (actuellement je fais de la programmation imperative
en Ada) ! j'ai ecris un programme pour le jeu de devinette mais il ne marche (il me semble que j'ai
un probleme en boucle tant que)
j'espere que quelqu'un pourra m'aider
merci infiniment d'avance!
voici mon programme
WITH Ada.text_io;
WITH Ada.integer_text_io;
WITH Alea;
USE Ada.text_io;
USE Ada.integer_text_io;
USE Alea;
--Specification:
--R0: ecrire un programme dans lequel l'utilisateur choisit un nombre entre 1 et 100, et la machine doit le deviner
--Tests: nombre = 2,99,50,23,0,140
--R1+Analyse informelle:
--1)l'utilisateur choisit un nombre entre 1 et 100 que la machine doit deviner
--2)la machine devine le nombre cherche par la methode de dichotomie (on utilisera pour cette devinette une boucle tant que car on ne sait pas si on doit executer les instructions au moins une fois ou si la machine devine le nombre du premier coup)
--3)on affichera le resultat
--R2:
--1)je sais faire (une boucle repeter jusqu'a pour que le nombre choisit soit entre 1 et 100)
--2)boucle tant que : on mettera un si alors sinon pour aider la machine a deviner le nombre cherche
--3)je sais faire
PROCEDURE jeu_machine IS
--un programme dans lequel l'utilisateur choisit un nombre entre 1 et 100, et la machine doit le deviner
--declaration des variables
N : INTEGER; --le nombre que l'utilisateur choisit de faire deviner à la machine
M : INTEGER; --le nombre que la machine devine
BEGIN
--l'utilisateur choisit un nombre entre 1 et 100 que la machine doit deviner
LOOP
PUT("veuillez taper le nombre compris entre 1 et 100 que vous voulez faire deviner à la machine : ");
GET(N);
EXIT WHEN (N>=1 AND N<=100);
END LOOP;
--N est entre 1 et 100
--la machine devine le nombre cherche par la methode de dichotomie
--initialisation des variables
--appeler la fonction fournissant un nombre aleatoire
M:=Alea_1_100;
WHILE M/=N LOOP
IF M>N THEN
M:=(M-1)/2;
ELSE
M:=(100-M)/2;
END IF;
GET(M);
END LOOP;
--M=N
--afficher le resultat
PUT("le nombre que je dois deviner est : ");
PUT(M);
END jeu_machine;
-----