algorithme test memoire

algorithme test memoire - C - Programmation

Marsh Posté le 29-03-2010 à 19:16:02    

Bonjour!  
 
j'ai besoin de votre aide pour la résolution d'un exercice en algorithmiqque.  
l'exercice s'intitule test de mémoire utilisateur:  
En fait, je dois ecrire un algo qui permet de génerer dix nombres aléatoirs puis de les cachés, ensuite, il demande à l'utilisateur de les redonner un par un sans suivre l'ordre.  
si la valeur donner par l'utilisateur est just, on lui dix c'est just, sinon, c'est faux.  
si la valeur donnée est just mais déja donnée on lui dit, just mais déja donnée.  
au final, il faux afficher le nombre des réponses justes, ainsi que les valeur non trouvées.  
 
voila moi j'ai pensé à un tableau, de 10 cases, dans les quelles je vais generer des nombres aléatoire entre 0 et 1000, puis un autre tableau permetant de marquer les répenses trouvés par un 1 et les non trouvé par .  
sauf que je ne vois pas comment structurer mon programme, merci de m'aider!  

Reply

Marsh Posté le 29-03-2010 à 19:16:02   

Reply

Marsh Posté le 29-03-2010 à 19:40:26    

SVP c'est urgent!

Reply

Marsh Posté le 29-03-2010 à 19:44:10    

une fonction par opération et un programme principal.
 

Reply

Marsh Posté le 29-03-2010 à 19:48:42    

elephantdream a écrit :

Bonjour!  
 
j'ai besoin de votre aide pour la résolution d'un exercice en algorithmiqque.  
l'exercice s'intitule test de mémoire utilisateur:  
En fait, je dois ecrire un algo qui permet de génerer dix nombres aléatoirs puis de les cachés, ensuite, il demande à l'utilisateur de les redonner un par un sans suivre l'ordre.  
si la valeur donner par l'utilisateur est just, on lui dix c'est just, sinon, c'est faux.  
si la valeur donnée est just mais déja donnée on lui dit, just mais déja donnée.  
au final, il faux afficher le nombre des réponses justes, ainsi que les valeur non trouvées.  
 
voila moi j'ai pensé à un tableau, de 10 cases, dans les quelles je vais generer des nombres aléatoire entre 0 et 1000, puis un autre tableau permetant de marquer les répenses trouvés par un 1 et les non trouvé par .  
sauf que je ne vois pas comment structurer mon programme, merci de m'aider!  


Bonjour,
ben ca pourrait ressembler à
 
1- tu initialises tes données (creer 10 nombres que tu stockes dans un tableau + creation tableau réponse)
2- tu les affiches pendant 10 secondes  
3- tu effaces l'ecran
4.1 debut de boucle tant que (l'utilisateur a pas trouvé les dix et temps restant disponible)
4.2 demander un nombre a l'utilisateur
4.3 tester le nombre et modifier les tableaux qui vont bien  
4.4 afficher l'etat a l'utilisateur (trouvé, combien, etc)
4.5 fin de boucle
5- Résultat finaux (a t il trouvé dans le temps imparti, combien de bonne réponse, combien d'essai...
6-fin

Reply

Marsh Posté le 29-03-2010 à 19:59:35    

merci pour les réponses
Oui, en fait, c'est ce à quoi j'ai pensé, sauf que c'est l'organisation de programe et les boucles à choisir qui me posent probleme, voila à quoi ressemble ce que j'ai fait:
 
algo test mémoire
var: tableau(i), tableau(l), i, l, nombre(donné par l'utilisateur), nbj(nombre des réponses justs),
debut
      pour (i de 0 à 9)
      tableau(i)<=rand()%1000
      tableau(l)<=0
      ecrire(tableau(i)
      ecrire(rien)
      effacer
    fin pour.
   pour (i de 0 à 9)
      ecrire(donne un nombre)
      lire(nombre)
     l<=0
   fin pour
   tantque (nombre#tableau(l) et l<9)
       l<=l+1
   fin tan que.
si nb#tableau(l)
   alors ecrire (c'est incorrect)
   sinon si tableau(l)=i
  alors ecrire (nombre correct mais déja donné)
    sinon ecrire(nombre correct)
  tableau(l)<==1
   nbj<==nbj+1
 finsi
ecrire(nombre de repense just est nbj)
 
voila ce que j'ai trouver, mais c'est incomplet, je sais pas si c'est bien ça et je ne vois pas comment afficher les valeurs non  trouvées.
merci de m'aider SVP  

Reply

Marsh Posté le 29-03-2010 à 20:10:53    


Pour le tirage aléatoire, je pense qu'il vaut mieux faire un tirage sans remise. Si non, ça va pas être possible.
Pour les valeur non trouvé, à chaque case de tableau de contrôle, correspond une case du tableau de donnée,

Reply

Marsh Posté le 29-03-2010 à 20:20:35    

breizhbugs a écrit :


Bonjour,
ben ca pourrait ressembler à
 
1- tu initialises tes données (creer 10 nombres que tu stockes dans un tableau + creation tableau réponse)
2- tu les affiches pendant 10 secondes  
3- tu effaces l'ecran
4.1 debut de boucle tant que (l'utilisateur a pas trouvé les dix et temps restant disponible)
4.2 demander un nombre a l'utilisateur
4.3 tester le nombre et modifier les tableaux qui vont bien  
4.4 afficher l'etat a l'utilisateur (trouvé, combien, etc)
4.5 fin de boucle
5- Résultat finaux (a t il trouvé dans le temps imparti, combien de bonne réponse, combien d'essai...
6-fin


 
Comment on fait pour incrémenter le temps ?


Message édité par Profil supprimé le 29-03-2010 à 20:20:55
Reply

Marsh Posté le 29-03-2010 à 20:20:43    

d'accord, sinon, tu peut m'eclairer un peut cette histoire de valeurs correspondante! c'est un peu flou! merci!

Reply

Marsh Posté le 29-03-2010 à 20:22:25    

on fait, dans mon sujet, il y a rien par aapport au temps, c'est l'utilisateur qui doit faire enter une fois qu'il a mémorisé les valeur, en fait, c'est très basic, ce n'est pas un vrai jeu quoi!

Reply

Marsh Posté le 29-03-2010 à 20:24:42    

elephantdream a écrit :

d'accord, sinon, tu peut m'eclairer un peut cette histoire de valeurs correspondante! c'est un peu flou! merci!


 
Tu as un tableau de données de dix cases de zéro à neuf et un tableau de contrôle de dix case de zéro à neuf également dans lequel tu marques zéro par défaut pour les valeurs non trouvées et un pour les valeurs trouvées.
Il te suffis de parcourir de tableau de contrôle, et pour chaque case i à zéro tu affiche la case i correspondante du tableau de données.

Reply

Marsh Posté le 29-03-2010 à 20:24:42   

Reply

Marsh Posté le 29-03-2010 à 20:25:19    

elephantdream a écrit :

on fait, dans mon sujet, il y a rien par aapport au temps, c'est l'utilisateur qui doit faire enter une fois qu'il a mémorisé les valeur, en fait, c'est très basic, ce n'est pas un vrai jeu quoi!


 
Et tu termine le programme comment ?

Reply

Marsh Posté le 29-03-2010 à 20:29:15    

voila, c'est la question que je me pose!, on fait, à la fin, il faut afficher les valeurs non trouvés, et le nombre de réponses justes! si ta regarder mon programme, c'est ca que j'ai essayer de faire sauf que ce n'est pas encore au point je pense! tu peux m'expliquer comment on fait pour faire correspondre une valeur de tableau(i) dans tableau(l)?

Reply

Marsh Posté le 29-03-2010 à 20:32:51    

pour i allant de 0 à 9 faire
   si tableau de contrôle(i) == zéro alors
      afficher tableau de données(i);
   fi si
fin pour;
 
C'est pas plus compliqué.

Reply

Marsh Posté le 29-03-2010 à 20:34:09    

merci!

Reply

Marsh Posté le 29-03-2010 à 22:31:52    

elephantdream a écrit :

merci pour les réponses
Oui, en fait, c'est ce à quoi j'ai pensé, sauf que c'est l'organisation de programe et les boucles à choisir qui me posent probleme, voila à quoi ressemble ce que j'ai fait:
 
algo test mémoire
var: tableau(i), tableau(l), i, l, nombre(donné par l'utilisateur), nbj(nombre des réponses justs),
debut
      pour (i de 0 à 9)
      tableau(i)<=rand()%1000
      tableau(l)<=0
      ecrire(tableau(i)
      ecrire(rien)
      effacer
    fin pour.
   pour (i de 0 à 9)
      ecrire(donne un nombre)
      lire(nombre)
     l<=0
   fin pour
   tantque (nombre#tableau(l) et l<9)
       l<=l+1
   fin tan que.
si nb#tableau(l)
   alors ecrire (c'est incorrect)
   sinon si tableau(l)=i
  alors ecrire (nombre correct mais déja donné)
    sinon ecrire(nombre correct)
  tableau(l)<==1
   nbj<==nbj+1
 finsi
ecrire(nombre de repense just est nbj)
 
voila ce que j'ai trouver, mais c'est incomplet, je sais pas si c'est bien ça et je ne vois pas comment afficher les valeurs non  trouvées.
merci de m'aider SVP  


Plop,
Quelques remarques:
- En algorithmie, je pense qu'on peut considérer l'indiçage des tableaux comme commençant a 1, C'est une spécificité du language de programmation choisie comme le C de le faire commencer a zero; tous les language ne sont pas comme ça.
- Tes tableau(i) et tes tableau(l) doivent avoir un nom plus explicatif du style ENTIER nombreAMemoriser[1..10]  
Je pense que tu dois aussi afficher ce que tu vas demander à l'utilisateur: ECRIRE("Retenez ces 10 nombres:" ) ... ECRIRE("Saisissez un nombre:" )
 
Si je parlais du contrôle du temps, c'est parce que ca pose la question: que se passe t il si l'utilisateur se souvient plus de tous les nombres et qu'il veut arreter? Que le programme surveille le temps qui passe est une solution
 
Dans ton algo, tu demandes de saisir les 10 nombres d'un coup et sans les stocker:

Code :
  1. pour (i de 0 à 9)
  2.       ecrire(donne un nombre)
  3.       lire(nombre)
  4.      l<=0
  5.    fin pour


 
Il serait plus facile je pense de traiter une demande a la fois (enfin ca peut etre un choix plus ou moins facile pour l'utilisateur!):

Code :
  1. POUR i de 1 a 10
  2.       ecrire("donne un nombre" );
  3.       lire(nombre) ;
  4.       POUR n de 1 a 10
  5.            SI nombre= nombreAMemoriser[n] ALORS
  6.                  trouve <- vrai
  7.            FINSI
  8.       FIN POUR n de 1 a 10
  9.       SI trouve = vrai ET nombrefauxciter[nombre] = 0 ALORS
  10.                  bonnereponse <- bonnereponse+1 ;
  11.                   nombrefauxciter[nombre] = 1 ;
  12.                   ECRIRE("c'est just) ; // Pour te citer
  13.       SINON  SI trouve = vrai ET nombrefauxciter[nombre] = 1 ALORS
  14.                   ECRIRE("c'est just, mais deja dis!) ;
  15.       SINON
  16.            ECRIRE("c'est faux!" ) ;
  17.            nombrefauxciter[nombre] <- nombrefauxciter[nombre] + 1;
  18.            faussesreponses<-faussesreponses + 1
  19.       FIN SI
  20.       nombreessai <- nombreessai + 1
  21. FIN POUR i de 1 a 10 
  22. ECRIRE("nombre d'essais: " + nombreessais + "nombre de réponses fausse:" + faussesreponses)
  23. ...


Message édité par breizhbugs le 29-03-2010 à 22:33:03
Reply

Marsh Posté le 29-03-2010 à 23:48:40    

merci breizhbugs pour cette réponse détaillée!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed