Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2728 connectés 

  FORUM HardWare.fr
  Programmation
  C

  algorithme test memoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

algorithme test memoire

n°1978612
elephantdr​eam
Posté le 29-03-2010 à 19:16:02  profilanswer
 

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!  

mood
Publicité
Posté le 29-03-2010 à 19:16:02  profilanswer
 

n°1978622
elephantdr​eam
Posté le 29-03-2010 à 19:40:26  profilanswer
 

SVP c'est urgent!

n°1978623
Profil sup​primé
Posté le 29-03-2010 à 19:44:10  answer
 

une fonction par opération et un programme principal.
 

n°1978624
breizhbugs
Posté le 29-03-2010 à 19:48:42  profilanswer
 

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

n°1978627
elephantdr​eam
Posté le 29-03-2010 à 19:59:35  profilanswer
 

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  

n°1978637
Profil sup​primé
Posté le 29-03-2010 à 20:10:53  answer
 


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,

n°1978639
Profil sup​primé
Posté le 29-03-2010 à 20:20:35  answer
 

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
n°1978640
elephantdr​eam
Posté le 29-03-2010 à 20:20:43  profilanswer
 

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

n°1978641
elephantdr​eam
Posté le 29-03-2010 à 20:22:25  profilanswer
 

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!

n°1978643
Profil sup​primé
Posté le 29-03-2010 à 20:24:42  answer
 

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.

mood
Publicité
Posté le 29-03-2010 à 20:24:42  profilanswer
 

n°1978646
Profil sup​primé
Posté le 29-03-2010 à 20:25:19  answer
 

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 ?

n°1978648
elephantdr​eam
Posté le 29-03-2010 à 20:29:15  profilanswer
 

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)?

n°1978652
Profil sup​primé
Posté le 29-03-2010 à 20:32:51  answer
 

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é.

n°1978654
elephantdr​eam
Posté le 29-03-2010 à 20:34:09  profilanswer
 

merci!

n°1978685
breizhbugs
Posté le 29-03-2010 à 22:31:52  profilanswer
 

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
n°1978700
elephantdr​eam
Posté le 29-03-2010 à 23:48:40  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  algorithme test memoire

 

Sujets relatifs
Gestion de la mémoire (résolu, merci !)stockage de tableau de structure en mémoire partagée
Comment allouer de la mémoire pour un tableau (malloc)Comparaison entre 2 dates/algorithme PHP
memoire, variable et erreur de segmentationSimuler un algorithme parallele
test si service actifMotivés pour un petit test? Alors un retour ne serait pas de refus...
[Shell/sh] Parcours recursif de répertoire et création de liensoutils de test pour un bon développeur !!!
Plus de sujets relatifs à : algorithme test memoire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR