Programmation » A peine je m'y mets que j'ai déjà des problèmes >.<...
Catégorie:  
Rappel du message précédent
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 27/08/2011 @ 18:38:12,
Par crodilus
Un if après le scanf ?



Effectivement sa marche, la phrase s'affiche, mais j'ai toujours le menu qui revient quand même :ohwell: !

Dernière édition: 27/08/2011 @ 18:38:44


   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 27/08/2011 @ 18:58:42,
Par philfr
Si tu ne veux pas retourner au menu, pourquoi faire un while ?
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 27/08/2011 @ 19:38:20,
Par crodilus
Si tu ne veux pas retourner au menu, pourquoi faire un while ?


Car dans l'exercice il y avait une boucle :shy: je sais c'est très naif de ma part !

Mais bon c'est résolu :clindoeil: merci !

Amicalement crodilus.
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 29/08/2011 @ 13:22:01,
Par crodilus
Alors je viens de terminer les pointeurs :tinostar: et j'aimerais vous posez une question pour voir si j'ai bien compris !

En gros les pointeurs servent à économiser de la mémoire ?
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 29/08/2011 @ 13:42:53,
Par zion
Non :grin:
Je suis le Roy :ocube:
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 29/08/2011 @ 14:07:27,
Par blietaer
bah....mmmh...un peu quand-même, ne fusse-ce que par effet de bord: dans le sens où on utilise surtout les pointeurs pour pas trimballer/(re)copier des grosses structures dans tout le code/programme, cela économise aussi un peu la mémoire.

Après biens sûr on peut parler perfs,...
Et aussi faciliter les tris, les trees, les accès à des tables,..
Et au besoin s'arrêter.
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 29/08/2011 @ 14:50:21,
Par crodilus
Oui en réfléchissant un peu c'est vrai que question mémoire ça ne change pas grand chose
vu que :

1)le pointeur (adresse1) va enregistrer un adresse(adresse2)
2)A l'adresse 2 on aura une variable que l'on pourra utiliser ou modifier

mais si on veut faire un pointeur grâce à l'adresse 2 on recommence l'opération avec l'adresse 2 comme adresse de départ et une adresse 3 pour l’utilisation de la variable.

Mwouai :halalala: !
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 29/08/2011 @ 17:51:40,
Par zion
bli> Je pense pas que sa réflexion allait aussi loin que ça, et quand je lis la suite je suis persuadé du contraire :petrus:
Je suis le Roy :ocube:
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 01/09/2011 @ 10:42:47,
Par crodilus
bli> Je pense pas que sa réflexion allait aussi loin que ça, et quand je lis la suite je suis persuadé du contraire :petrus:


Si je veux en faire mes études il faut que je creuse un minimum :lol: !

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. #include <time.h> 
  4. int main ( int argc, char** argv ) 
  5.     int nombreMystere = 0, nombreEntre = 0
  6.     int compteur = 0
  7.     int regles = 0
  8.     const int MAX = 100, MIN = 1
  9.     srand(time(NULL)); 
  10.     nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; 
  11.     printf("Bonjour et bienvenue a mon petit jeux de devinete!!! Tape 1 pour jouer ou 2 pour voir les regles BONNE CHANCE!!! \n\n"); 
  12.     scanf("%d", ®les); 
  13.     switch (regles) 
  14.     { 
  15.         case 1
  16.             do 
  17.     { 
  18.         printf("Quel est le nombre mystere? "); 
  19.         scanf("%d", &nombreEntre); 
  20.         if (nombreMystere > nombreEntre) 
  21.             printf("C'est plus !\n\n"); 
  22.         else if (nombreMystere < nombreEntre) 
  23.             printf("C'est moins !\n\n"); 
  24.         else 
  25.             printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!\n\n", compteur); 
  26.             compteur++; 
  27.     } while (nombreEntre != nombreMystere); 
  28.     break
  29.     case 2
  30.     printf("Les regles du jeux sont tres faciles il suffit de deviner le bon nombre entre 1-100. Essaye de le trouver en un minimum de temp et c'est gange!!!"); 
  31.     break
  32.     } 
  33.     return 0
  34. }


J'ai une question sur le compteur. Comment se fait-il qu'il comptabilise tout les
coups ? Car j'aurais eu tendance à penser qu'il n'aurait que comptabilisé le dernier vu qu'il se trouvait dans la condition else ... ? !

Moi j'avais mis mon compteur dans un printf juste après le premier printf, et du fait il me mettait le nombre de coups joués à chaque fois que l'on tapait un chiffre.


Programmer ce n'est pas difficile mais ce n'est pas facile non plus :lol: !
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 01/09/2011 @ 10:49:59,
Par dede
Faut encadrer d'accolades les instructions de ton else.
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 01/09/2011 @ 10:58:39,
Par crodilus
Faut encadrer d'accolades les instructions de ton else.


Effectivement ! Mais je ne vois pas toujours pas pourquoi il comptabilise tout les coups, j'aimerais avoir une explication sur le fonctionnement :ohwell:

Vous pourriez me dire : "ne te prends pas la tête tu sais comment on fait et ne va pas chercher plus loin"

Mais ce genre de réflexion m’horripile car je ne comprends pas le pourquoi du comment :heink: !
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 01/09/2011 @ 11:08:10,
Par ovh
Vu l'indentation de ton code, on voit bien que tu veux mettre compteur++ dans le bloc else, mais en C ça ne marche pas comme ça. Tout bloc doit être délimité par des accolades. Contrairement à Python, C ne tient pas compte de l'indentation de ton code, et donc pour lui compteur++ est en dehors de ton else.
Je n'ai rien à voir avec www.ovh.com
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 01/09/2011 @ 11:21:57,
Par crodilus
Vu l'indentation de ton code, on voit bien que tu veux mettre compteur++ dans le bloc else, mais en C ça ne marche pas comme ça. Tout bloc doit être délimité par des accolades. Contrairement à Python, C ne tient pas compte de l'indentation de ton code, et donc pour lui compteur++ est en dehors de ton else.


Merci bien pour cette réponse ! :clindoeil:
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 01/09/2011 @ 12:04:26,
Par Pinou
Chacun ses habitudes mais pas mal de programmeurs (en tout cas dans ces langages) te conseilleront de TOUJOURS mettre des {} même pour des bloc d'une ligne.
Ça évite ce genre d'erreur et pour certains c'est plus lisible.

Exemple :
  1.    if (nombreMystere > nombreEntre) 
  2.    { 
  3.      printf("C'est plus !\n\n"); 
  4.    } 
  5.    else if (nombreMystere < nombreEntre) 
  6.    { 
  7.      printf("C'est moins !\n\n"); 
  8.    } 
  9.    else 
  10.    { 
  11.      printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!\n\n", compteur); 
  12.      compteur++; 
  13.    }
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 04/09/2011 @ 13:00:38,
Par crodilus
Les questions continues :crazy: !

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. int main(int argc, char *argv[]) 
  4. int tableau[4] ={5,8,11,13}, i = 0
  5. int resultat = 0
  6. for (i > 0 ; i < 4 ; i++) 
  7. printf("%d \n", tableau[i]); 
  8. printf ("\n%d+%d+%d+%d=%d\n",tableau[0],tableau[1],tableau[2],tableau[3], &resultat); 
  9. return 0
  10. }


je n'ai pas le résultat de l'addition mais un tout au nombre, je pense que c'est l'adresse où va se trouver la valeur de l'addition. Mais quel signe dois-je mettre pour ne pas avoir l'adresse mais la valeur s'y trouvant ?
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 04/09/2011 @ 13:59:46,
Par Clandestino
1. Comment veux-tu que 'resultat' contienne quoi que ce soit, tu n'y stocke rien si ce n'est une valeur initiale de 0 ;
2. Ce n'est pas '&resultat' mais 'resultat' ; '&resultat' retourne l'adresse en mémoire de la variable, par sa valeur.
3. On conçoit très bien que l'apprentissage de la programmation soit un peu rebutant, mais si tu demandes de l'aide à tout bout de champ, tu risque de ne pas apprendre beaucoup par toi-même...
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 04/09/2011 @ 14:11:55,
Par crodilus

3. On conçoit très bien que l'apprentissage de la programmation soit un peu rebutant, mais si tu demandes de l'aide à tout bout de champ, tu risque de ne pas apprendre beaucoup par toi-même...


Je suis d'accord avec toi j'ai peut-être trop tendance à me retourner directement sur le forum avant de cherche par moi même. Proportionnellement je répond peut-être à 35 % de mes interrogations tandis que vous répondez au 65 restant ! Je pense que c'est un mauvais réflexe qui peut me pénaliser par la suite. Une certaine perte d'autonomie et de capacité de réaction face à un problème.


J'ai peut-être avalé un peu trop de matière sans prendre le recul nécessaire pour voir si j'avais tout assimiler correctement :ohwell: !

Je pense que je vais me repasser les 180 pages que j'ai fait, en synthétisant le points important et en refaisant les exercices une nouvelle fois :clindoeil: !

Merci de ton intervention ! Tu m'as aidé à remettre les pendules à l'heure et à me recadrer dans mon apprentissage!

Amicalement crodilus !
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 04/09/2011 @ 16:21:49,
Par max

for (i > 0 ; i < 4 ; i++)



Que vient faire ce i>0 dans l'expression d’initialisation ?

Dernière édition: 05/09/2011 @ 07:59:32
Trololo
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 04/09/2011 @ 17:07:23,
Par crodilus
Que i=0 ou i>0 j'ai juste fait ça pour voir si quelque chose changeais dans l'exécution.

Dernière édition: 04/09/2011 @ 17:44:29
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 09/09/2011 @ 13:46:30,
Par crodilus
Bonjour à tous et à toutes après quelques jours de travail seul et un bon nombre de questions auxquelles j'ai su répondre par moi même :huit: il y en a une que je n'arrive quand même pas à résoudre :angry: !!

L'exercice que j'ai fait consistait à transformer ce programme ci :



  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. #include <time.h> 
  4. int main ( int argc, char** argv ) 
  5.     int nombreMystere = 0, nombreEntre = 0
  6.     const int MAX = 100, MIN = 1
  7.     // Génération du nombre aléatoire 
  8.     srand(time(NULL)); 
  9.     nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; 
  10.     /* La boucle du programme. Elle se répète tant que l'utilisateur 
  11. n'a pas trouvé le nombre mystère */ 
  12.     do 
  13.     { 
  14.         // On demande le nombre 
  15.         printf("Quel est le nombre ? "); 
  16.         scanf("%d", &nombreEntre); 
  17.         // On compare le nombre entré avec le nombre mystère 
  18.         if (nombreMystere > nombreEntre) 
  19.             printf("C'est plus !\n\n"); 
  20.         else if (nombreMystere < nombreEntre) 
  21.             printf("C'est moins !\n\n"); 
  22.         else 
  23.             printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n"); 
  24.     } while (nombreEntre != nombreMystere); 
  25.     return 0
  26. }


En un programme qui comporterait deux fonction : genereNombre et NombreMystere.

Voici se que j'ai fait :

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. #include <time.h> 
  4. int genereNombre () 
  5. int nombre=0
  6. const int MAX = 100, MIN = 1
  7. srand (time(NULL)); 
  8. nombre = (rand () % (MAX - MIN + 1)) + MIN; 
  9. return nombre; 
  10. int compareNombres (nombreEntre,nombreMystere) 
  11. int compteur=0
  12.     do 
  13. printf("\nQuel est le nombre ? "); 
  14. scanf("%d", &nombreEntre); 
  15. if (nombreMystere > nombreEntre) 
  16. printf("\nC'est plus !\n"); 
  17. else if (nombreMystere < nombreEntre) 
  18. printf("\nC'est moins !\n"); 
  19. else 
  20. printf ("\nBravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteur); 
  21. compteur++; 
  22. while (nombreEntre != nombreMystere); 
  23. return nombreEntre; 
  24. int main ( int argc, char** argv ) 
  25. int nombreMystere = 0, nombreEntre = 0
  26. const int MAX = 100, MIN = 1
  27. nombreMystere = genereNombre(MIN, MAX); 
  28. printf("Bienvenue dans le jeu du nombre mystere !\n\nLe principe est tres simple, l'ordinateur va enregistrer un nombre entre 0 et \n100 et vous devrez le trouver !\n"); 
  29. do 
  30. compareNombres(nombreEntre, nombreMystere); 
  31. while (nombreEntre != nombreMystere); 
  32. return 0
  33. }


En faite au début j'ai mis mon
  1. printf("\nQuel est le nombre ? "); 
  2. scanf("%d", &nombreEntre);


dans la boucle do...while de la fonction int main mais le programme ne s'arrêtait pas de dire c'est plus ou c'est moins lorsque je tapais un nombre. J'ai résolu le problème en l'injectant dans la fonction compareNombres.

J'aimerais savoir pourquoi cela ne fonction pas lorsque c'est placé dans la boucle do...while de la fonction int main ??

Car je ne vois pas d'où vient le problème, mon nombreMystère et mon nombreEntre sont tout les deux définis lorsqu'ils vont être injecter dans la fonction generenombre.

Amicalement crodilus.

Dernière édition: 09/09/2011 @ 13:55:49
   
A peine je m'y mets que j'ai déjà des problèmes >.<...
Publié le 09/09/2011 @ 16:31:38,
Par Pinou

int compareNombres (nombreEntre,nombreMystere)


C'est un peu vieux dans mon cerveau ramoli mais tu dois pas déclarer tes variables en C ???

Un truc du genre :
int compareNombres (int nombreEntre, int nombreMystere)
???
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?