Souhaitez-vous participer à la création d'un jeu vidéo inspiré de Stardew Valley, ou le tester lorsque la version bêta sera disponible ? Remplissez notre sondage ou inscrivez-vous à notre lettre d'information (en bas de page)
1

Rédaction d'un code source compteur

le 25-06-2016 à 09:11 #
Bonjour à tous,
Mon problème est que, novice en programmation, j'essaie d'écrire un code source qui au final me donne le nombre de fois que j'ai saisi des valeurs aléatoires avant de trouver le nombre juste(unique),un peu à la manière d'un compteur.
J'espère avoir été clair dans mon explication et merci d'avance pour toutes vos réponses

Re: Rédaction d'un code source compteur
le 29-06-2016 à 03:28 #
accessoirement dans quel langage

sinon ta machine génère un nombre aléatoire dans quel fourchette ? et le met dans une variable, par exemple LeNombreQueJeDoisTrouver dont le type correspond à la valeur du nombre généré entier signé ou non 8Bits 32bits float ?
tu rentres une valeur dans une variable du même type que LeNombreQueJeDoisTrouver que tu peux appeler MonEssai le compteur de nombre d'essai est incrémenté tu dois créer une variable par exemple NombreD_Essai que tu auras déclaré et initialisé à 0, si tu as moins de 256 essais tu peux utiliser 8bits
tu crée une fonction pour saisir ta réponse
tu vérifie que la réponse est valable pas de caractères ou pas de virgules ou de nombre négatif ou excédant les limites
si elle est valable tu incrémente le compteur NombreD_Essai de 1 par exemple NombreD_Essai= NombreD_Essai+1 ou NombreD_Essai++ en fonction de la syntaxe de ton langage de programmation
tu compares MonEssai avec LeNombreQueJeDoisTrouver
Si c'est égal tu envoie le message "vous avez trouvé" ainsi que la valeur du compteur NombreD_Essai et tu termine ton programme
si non egal
Le système doit il te donner des indications par exemple
votre essai est plus petit que le nombre à trouver
ou
votre essai est plus grand que le nombre à trouver
si ce n'est pas le cas tu tu retournes dans la fonction de saisie de ta réponse
si oui
alors si MonEssai est plus grand que LeNombreQueJeDoisTrouver
tu envoie le message " votre essai est plus petit que le nombre à trouver"
autrement tu envoies
votre essai est plus grand que le nombre à trouver

et tu retournes dans la fonction de saisie de ta réponse

IL Y A UNE ERREUR DANS CE PROGRAMME PEUX TU LA TROUVER ?






(Modifié par rokag3 le 29-06-2016 à 03:31)
Re: Rédaction d'un code source compteur
le 29-06-2016 à 10:11 #
Merci Rokag3 pour ta réponse
En fait j'utilise c++ et mon programme que j'appelle +ou- m'indique quand mon Essai est plus ou moins la valeur à trouver, il ya comme tu dis une variable de type long que je dois déclarer et initialiser à 0
Malgré tout, à la fin du programme,il m'affiche" vous avez trouvé la réponse en "12344556" coups, au lieu du nombre réel de tentatives,c'est justement cette valeur qui me pose problème
Merci pour votre réponse
Re: Rédaction d'un code source compteur
le 29-06-2016 à 13:40 #
Salut,

Ca peut être une bonne idée de nous montrer ton code (ou une partie de celui-ci est suffisament bien commenté). En tout cas, on pourra mieux t'aider si tu le fais.
Re: Rédaction d'un code source compteur
le 29-06-2016 à 16:15 #
vous avez trouvé la réponse en "12344556" coups, au lieu du nombre réel de tentatives,c'est justement cette valeur qui me pose problème


a priori au pif cela ressemble bigrement à une concaténation tu aurais fait 6 essais
montre ton code BIEN COMMENTE
Re: Rédaction d'un code source compteur
le 30-06-2016 à 10:35 #
Merci pour votre réponse. voici l(intégralité de mon code
# include<stdio.h>
# include<stdlib.h>
" include<time.h>
int main(int argc, char *argv[])
{
long nombreMystere = 0,nombreEntre = 0;
const long MAX = 100, MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX-MIN + 1)) + MIN;
do
{
printf("\n Quel est le nombre ?\n\n");
scanf("%ld", &nombreEntre);
if(nombreMystere > nombreEntre)
printf("\n C'est plus !\n\n");
else if(nombreMystere < nombreEntre)
printf("\n C'est moins !\n\n");
else
printf("\n Bravi, vous avez trouve le nombre mystere en %ld Essais!!!\,\n"); // C'est là mon problème car le code ne me donne pas le nombre exact d'essais que j'ai effectué avant de trouver "CE FAMEUX NOMBRE MYSTERE". Manque t-il une fonction non déclarée ?Mystere//
}
while(nombreEntre ! = nombreMystere);
system("PAUSE");
return 0;
}
Re: Rédaction d'un code source compteur
le 30-06-2016 à 10:56 #
printf("\n Bravi, vous avez trouve le nombre mystere en %ld Essais!!!\,\n", ???variable???);


Et quelle variable compte le nombre d'essai ? Parce que je ne vois pas de variable qui remplit ce rôle.

(Modifié par Alcar le 30-06-2016 à 10:56)
Re: Rédaction d'un code source compteur
le 30-06-2016 à 12:51 #
Et si j'initialise
long nombreMystere = 0,nombreEntre = 0, nombreEssais = 0;
Le nombre d'essais n'est pas défini à l'avance car il dépend du nombre da saisies de l'utilisateur, complètement aléatoire
Re: Rédaction d'un code source compteur
le 30-06-2016 à 13:44 #
Il faut juste incrémenter la variable "nombreEssais" après chaque saisie. (incrémenter -> nombreEssais++)
Re: Rédaction d'un code source compteur
le  1-07-2016 à 10:29 #
J'avoue que j'ai du mal à trouver la bonne syntaxe qui fasse le lien entre nombreEssais et nombre de saisies

Si j'incrémente nombreMystere = nombreEssais++, je crains d'obtenir la valeur saisie +1, ce qui fausserait le résultat
Je continue de bidouiller, j'attends vos idées
Re: Rédaction d'un code source compteur
le  1-07-2016 à 11:02 #
non, non, non, tu écris juste la ligne :
nombreEssais++ ;

Dans la boucle. Le signe égal est en fait caché. En clair :

nombreEssais++ ;
est equivalent à :
nombreEssais = nombreEssais+1 ;

Et c'est tout ce que tu cherches, c.a.d une variable qui augmente de 1 à chaque iteration.


(Modifié par Alcar le 01-07-2016 à 11:03)
Re: Rédaction d'un code source compteur
le  1-07-2016 à 16:31 #

le  1-07-2016 à 10:29, @ZAZAMOTEUR :
J'avoue que j'ai du mal à trouver la bonne syntaxe qui fasse le lien entre nombreEssais et nombre de saisies

Si j'incrémente nombreMystere = nombreEssais++, je crains d'obtenir la valeur saisie +1, ce qui fausserait le résultat
Je continue de bidouiller, j'attends vos idées


A priori tu as un gros problème de compréhension de la notion de variable

Une variable n'est pas lié avec quoi que ce soit
Imagine un tiroir dans une armoire, dans ce tiroir il y a une ardoise suffisamment grande pour écrire l'information que ta variable doit supporter d'ou l'intérêt de bien choisir son tiroir (déclaration du type de variable) c'est à ce moment là que tu as fabriqué ton tiroir et l'a inséré dans l'armoire
Pour comprendre l'analogie tu ne peu mettre qu'un seul objet dans chaque tiroir

ce tiroir à une adresse physique dans l'armoire qui lui est propre, il y a aussi une armoire ou les variables sont listés et chaque tiroir contient un numéro qui pointe sur l'adresse de leur tiroir respectif

si j'ai fait une liste avec
tiroir 0 chaussette
tiroir 1 nombreMystere
tiroir 2 slip
tiroir 3 bouton de manchettes
tiroir 4 nombreEssais

Que dans l'armoire j'ai
tiroir 0 chaussette noire
tiroir 1 15241
tiroir 2 slip jaune
tiroir 3 bouton coeur
tiroir 4 3


si j'écris slip=rouge; je prend le tiroir 2 j'ouvre il y a un slip jaune je peux modifier j' y met un slip rouge slip=rouge
Cela n'a aucun effet sur la valeur du tiroir nombreMystere ou chaussette
si j'écris nombreEssais++ je prend le tiroir 4 j'ajoute 1 à la valeur existante donc 3+1 ce qui fait 4

tiroir 0 chaussette noire
tiroir 1 15241
tiroir 2 slip rouge
tiroir 3 bouton coeur
tiroir 4 4

si j'écris maintenant nombreMystere = nombreEssais++,

*** je vais mettre dans le tiroir 4 le contenu du tiroir 4 auquel j'ajouterai 1 et dans le tiroir 1 le contenu du tiroir 1

tiroir 0 chaussette noire
tiroir 1 5
tiroir 2 slip rouge
tiroir 3 bouton coeur
tiroir 4 5

Ce qui n'est pas ce que tu veux
écrivons nombreMystere = 15241
écrivons nombreEssais--
nous avons maintenant

tiroir 0 chaussette noire
tiroir 1 15241
tiroir 2 slip rouge
tiroir 3 bouton coeur
tiroir 4 4

tu dois donc penser à la séquence d'éxecution de ton programme pour modifier une variable
Ici c'est lorsque tu fais la saisie de NombreEntre tu feras ensuite nombreEssais++

et tu auras

tiroir 0 chaussette noire
tiroir 1 15241
tiroir 2 slip rouge
tiroir 3 bouton coeur
tiroir 4 5




(Modifié par rokag3 le 01-07-2016 à 16:33)
*** Il y a une erreur dans l'explication (seule l'erreur est formatrice) tu peux me dire laquelle?

(Modifié par rokag3 le 01-07-2016 à 16:44)
Re: Rédaction d'un code source compteur
le  1-07-2016 à 16:39 #
Petite correction (en rouge) et une suggestion (en vert) :

[...]si j'écris maintenant nombreMystere = nombreEssais++,

je vais mettre dans le tiroir 4 le contenu du tiroir 4 auquel j'ajouterai 1 et, ensuite, dans le tiroir 1 le contenu du tiroir 4 [...]


Re: Rédaction d'un code source compteur
le  1-07-2016 à 16:45 #

le  1-07-2016 à 16:39, @Alcar :
Petite correction (en rouge) et une suggestion (en vert) :

[...]si j'écris maintenant nombreMystere = nombreEssais++,

je vais mettre dans le tiroir 4 le contenu du tiroir 4 auquel j'ajouterai 1 et, ensuite, dans le tiroir 1 le contenu du tiroir 4 [...]



c'était pas à toi à trouver l'erreur

Il reste l'erreur dans le premier post elle est formatrice car elle nous apprend que nous avons tendance à comprendre ce que nous avons "deviné" qu'il fallait comprendre et non pas ce qui est écrit, ce type d'erreur est une des plus courante et des plus consommatrice de temps

En fait on doit fonctionner à un niveau d'intelligence bas pour faire de la programmation

(Modifié par rokag3 le 01-07-2016 à 17:01)
Re: Rédaction d'un code source compteur
le  1-07-2016 à 17:01 #
C'est le genre de truc qui peut rendre un débutant complétement confus ... et certains n'osent memes pas mettre en doute.
Re: Rédaction d'un code source compteur
le  1-07-2016 à 18:19 #
Merci pour vos réponses, je rappelle que j'apprends la programmation en autodidacte depuis peu et peut etre que je confonds ou j'ai pas encore la logique d'un programmeur, mais je prends en compte vos analyses car je suis sur que ça m'aidera pour la suite, vous serez informé de mon résultat
Re: Rédaction d'un code source compteur
le  1-07-2016 à 22:38 #
alors si MonEssai est plus grand que LeNombreQueJeDoisTrouver
tu envoie le message " votre essai est plus petit que le nombre à trouver"
autrement tu envoies
votre essai est plus grand que le nombre à trouver

Allons je ne pense pas que cela puisse induire en erreur par contre cela montre l'importance d'une manière de lire en bas niveaux ce genre d'entrainement est indispensable (accessoirement c'est aussi important lorsque l'on lit une doc )
Re: Rédaction d'un code source compteur
le  5-12-2016 à 06:01 #
Bonjour Ben,

Apprendre c++ sur un site spécialisé serait idéal pour comprendre mieux ce que tu voudrais entreprendre. Ainsi, tu pourras avancer rapidement dans la réalisation de tes projets.

Merci
Re: Rédaction d'un code source compteur
le  5-12-2016 à 13:47 #

le  1-07-2016 à 10:29, @ZAZAMOTEUR :
J'avoue que j'ai du mal à trouver la bonne syntaxe qui fasse le lien entre nombreEssais et nombre de saisies

Je suppose que chaque essai que tu tente, est suivi de la touche Entrée !
et que penses-tu d'un compteur qui totaliserait le nombre de fois ou tu enfonce la touche ENTREE apres chaque essai ?
.. tu comptes les frappes de cette touche tant que la réponse n'est pas la bonne.
Tu peux même l'afficher en temps réel ou faire un décompte sur le nombre de tentatives restantes.

(Modifié par karthesius le 05-12-2016 à 13:48)




Ces discussions pourraient vous intéresser également:


mauvais code de compteur
bug dans code source C
code source d'un logiciel
Code Source d'une PalyList
code source d'une application en C++