27/08/2011 @ 18:58:42: philfr: A peine je m'y mets que j'ai déjà des problèmes >.< !
Si tu ne veux pas retourner au menu, pourquoi faire un while ?
27/08/2011 @ 19:38:20: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
Si tu ne veux pas retourner au menu, pourquoi faire un while ?
Car dans l'exercice il y avait une boucle
je sais c'est très naif de ma part !
Mais bon c'est résolu
merci !
Amicalement crodilus.
29/08/2011 @ 13:22:01: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
Alors je viens de terminer les pointeurs
et j'aimerais vous posez une question pour voir si j'ai bien compris !
En gros les pointeurs servent à économiser de la mémoire ?
29/08/2011 @ 13:42:53: zion: A peine je m'y mets que j'ai déjà des problèmes >.< !
Non
29/08/2011 @ 14:07:27: blietaer: A peine je m'y mets que j'ai déjà des problèmes >.< !
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,..
29/08/2011 @ 14:50:21: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
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
!
29/08/2011 @ 17:51:40: zion: A peine je m'y mets que j'ai déjà des problèmes >.< !
bli> Je pense pas que sa réflexion allait aussi loin que ça, et quand je lis la suite je suis persuadé du contraire
01/09/2011 @ 10:42:47: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
bli> Je pense pas que sa réflexion allait aussi loin que ça, et quand je lis la suite je suis persuadé du contraire
Si je veux en faire mes études il faut que je creuse un minimum
!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int main ( int argc, char** argv )
- {
- int nombreMystere = 0, nombreEntre = 0;
- int compteur = 0;
- int regles = 0;
- const int MAX = 100, MIN = 1;
- srand(time(NULL));
- nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
- printf("Bonjour et bienvenue a mon petit jeux de devinete!!! Tape 1 pour jouer ou 2 pour voir les regles BONNE CHANCE!!! \n\n");
- scanf("%d", ®les);
- switch (regles)
- {
- case 1:
- do
- {
- printf("Quel est le nombre mystere? ");
- scanf("%d", &nombreEntre);
- if (nombreMystere > nombreEntre)
- printf("C'est plus !\n\n");
- else if (nombreMystere < nombreEntre)
- printf("C'est moins !\n\n");
- else
- printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!\n\n", compteur);
- compteur++;
- } while (nombreEntre != nombreMystere);
- break;
- case 2:
- 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!!!");
- break;
- }
- return 0;
- }
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 !
01/09/2011 @ 10:49:59: dede: A peine je m'y mets que j'ai déjà des problèmes >.< !
Faut encadrer d'accolades les instructions de ton else.
01/09/2011 @ 10:58:39: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
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
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
!
01/09/2011 @ 11:08:10: ovh: A peine je m'y mets que j'ai déjà des problèmes >.< !
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.
01/09/2011 @ 11:21:57: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
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 !
01/09/2011 @ 12:04:26: Pinou: A peine je m'y mets que j'ai déjà des problèmes >.< !
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 :
- if (nombreMystere > nombreEntre)
- {
- printf("C'est plus !\n\n");
- }
- else if (nombreMystere < nombreEntre)
- {
- printf("C'est moins !\n\n");
- }
- else
- {
- printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!\n\n", compteur);
- compteur++;
- }
04/09/2011 @ 13:00:38: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
Les questions continues
!
- #include <stdio.h>
- #include <stdlib.h>
- int main(int argc, char *argv[])
- {
- int tableau[4] ={5,8,11,13}, i = 0;
- int resultat = 0;
- for (i > 0 ; i < 4 ; i++)
- {
- printf("%d \n", tableau[i]);
- }
- printf ("\n%d+%d+%d+%d=%d\n",tableau[0],tableau[1],tableau[2],tableau[3], &resultat);
- return 0;
- }
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 ?
04/09/2011 @ 13:59:46: Clandestino: A peine je m'y mets que j'ai déjà des problèmes >.< !
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...
04/09/2011 @ 14:11:55: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
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
!
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
!
Merci de ton intervention ! Tu m'as aidé à remettre les pendules à l'heure et à me recadrer dans mon apprentissage!
Amicalement crodilus !
04/09/2011 @ 16:21:49: max: A peine je m'y mets que j'ai déjà des problèmes >.< !
for (i > 0 ; i < 4 ; i++)
Que vient faire ce i>0 dans l'expression d’initialisation ?
04/09/2011 @ 17:07:23: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
Que i=0 ou i>0 j'ai juste fait ça pour voir si quelque chose changeais dans l'exécution.
09/09/2011 @ 13:46:30: crodilus: A peine je m'y mets que j'ai déjà des problèmes >.< !
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
il y en a une que je n'arrive quand même pas à résoudre
!!
L'exercice que j'ai fait consistait à transformer ce programme ci :
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int main ( int argc, char** argv )
- {
- int nombreMystere = 0, nombreEntre = 0;
- const int MAX = 100, MIN = 1;
-
- srand(time(NULL));
- nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
-
- n'a pas trouvé le nombre mystère */
- do
- {
-
- printf("Quel est le nombre ? ");
- scanf("%d", &nombreEntre);
-
- if (nombreMystere > nombreEntre)
- printf("C'est plus !\n\n");
- else if (nombreMystere < nombreEntre)
- printf("C'est moins !\n\n");
- else
- printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
- } while (nombreEntre != nombreMystere);
- return 0;
- }
En un programme qui comporterait deux fonction : genereNombre et NombreMystere.
Voici se que j'ai fait :
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int genereNombre ()
- {
- int nombre=0;
- const int MAX = 100, MIN = 1;
- srand (time(NULL));
- nombre = (rand () % (MAX - MIN + 1)) + MIN;
- return nombre;
- }
- int compareNombres (nombreEntre,nombreMystere)
- {
- int compteur=0;
- do
- {
- printf("\nQuel est le nombre ? ");
- scanf("%d", &nombreEntre);
- if (nombreMystere > nombreEntre)
- printf("\nC'est plus !\n");
- else if (nombreMystere < nombreEntre)
- printf("\nC'est moins !\n");
- else
- printf ("\nBravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteur);
- compteur++;
- } while (nombreEntre != nombreMystere);
- return nombreEntre;
- }
- int main ( int argc, char** argv )
- {
- int nombreMystere = 0, nombreEntre = 0;
- const int MAX = 100, MIN = 1;
- nombreMystere = genereNombre(MIN, MAX);
- 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");
- do
- {
- compareNombres(nombreEntre, nombreMystere);
- } while (nombreEntre != nombreMystere);
- return 0;
- }
En faite au début j'ai mis mon
- printf("\nQuel est le nombre ? ");
- 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.
09/09/2011 @ 16:31:38: Pinou: A peine je m'y mets que j'ai déjà des problèmes >.< !
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)
???