Debutant en C
Fermé
ilusion2
Messages postés
5
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009
-
11 juil. 2009 à 16:37
ilusion2 Messages postés 5 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009 - 17 juil. 2009 à 15:53
ilusion2 Messages postés 5 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009 - 17 juil. 2009 à 15:53
8 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
11 juil. 2009 à 17:35
11 juil. 2009 à 17:35
Salut,
printf("choisis ton nombre\n", nombre1);
Si tu veux afficher nombre1, tu ne dois pas oublier de mettre dans le premier argument ( %d ). Mais ici, en suivant la logique de ton programme, tu n'as pas besoin de l'afficher, donc je te recommanderai d'effacer purement et simplement nombre1.
scanf("nombre1%d" , &nombre1);
Mauvaise utilisation de scanf. Correction : scanf("%d",&nombre1);
int nombre2= 0;
Ce que tu fais est valable avec la norme C99 (et non en ANSI). Mais, ce n'est pas très propre. Généralement, on déclare les variable en tout premier dans un scope. En gros, groupe tes déclarations de variables d'une part et tes instructions d'autre part.
printf("choisis ton nombre\n", nombre2);
scanf("nombre2%d", nombre2);
Même constat que les deux premières remarques.
int resultat = nombre1 + nombre2;
Utilise plutôt : resultat=nombre1+nombre2; et déclare int resultat avec tes autres variables.
getchar();
Ce getchar() va récupérer le '\n' que tu as utilisé lorsque tu as validé l'entrée de ta variable (touche entrée).
Ainsi le programme prendra fin juste après. Donc remets deux getchar() (un pour enlever du buffer clavier le '\n' du scanf("%d",&..) et le second pour attendre avant de provoquer la fin du programme.
Cdlt
printf("choisis ton nombre\n", nombre1);
Si tu veux afficher nombre1, tu ne dois pas oublier de mettre dans le premier argument ( %d ). Mais ici, en suivant la logique de ton programme, tu n'as pas besoin de l'afficher, donc je te recommanderai d'effacer purement et simplement nombre1.
scanf("nombre1%d" , &nombre1);
Mauvaise utilisation de scanf. Correction : scanf("%d",&nombre1);
int nombre2= 0;
Ce que tu fais est valable avec la norme C99 (et non en ANSI). Mais, ce n'est pas très propre. Généralement, on déclare les variable en tout premier dans un scope. En gros, groupe tes déclarations de variables d'une part et tes instructions d'autre part.
printf("choisis ton nombre\n", nombre2);
scanf("nombre2%d", nombre2);
Même constat que les deux premières remarques.
int resultat = nombre1 + nombre2;
Utilise plutôt : resultat=nombre1+nombre2; et déclare int resultat avec tes autres variables.
getchar();
Ce getchar() va récupérer le '\n' que tu as utilisé lorsque tu as validé l'entrée de ta variable (touche entrée).
Ainsi le programme prendra fin juste après. Donc remets deux getchar() (un pour enlever du buffer clavier le '\n' du scanf("%d",&..) et le second pour attendre avant de provoquer la fin du programme.
Cdlt
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
11 juil. 2009 à 17:34
11 juil. 2009 à 17:34
Salut,
je pense que le prb viens plus de la syntaxe:
printf("choisis ton nombre\n", nombre1); //pourquoi mettre nombre1 comme argument du printf?
scanf("nombre1%d" , &nombre1); //pourquoi mettre: nombre1%d
scanf("nombre2%d", nombre2); //il faut preciser l' adresse d'une variable
tu peux essayer cela....
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int nombre1= 0;
printf("choisis ton nombre\n");
scanf("%d" , &nombre1);
int nombre2= 0;
printf("choisis ton nombre\n");
scanf("%d",&nombre2);
printf(" %d + %d = %d\n", nombre1, nombre2, nombre1 + nombre2);
getchar();
return 0;
}
@+
je pense que le prb viens plus de la syntaxe:
printf("choisis ton nombre\n", nombre1); //pourquoi mettre nombre1 comme argument du printf?
scanf("nombre1%d" , &nombre1); //pourquoi mettre: nombre1%d
scanf("nombre2%d", nombre2); //il faut preciser l' adresse d'une variable
tu peux essayer cela....
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int nombre1= 0;
printf("choisis ton nombre\n");
scanf("%d" , &nombre1);
int nombre2= 0;
printf("choisis ton nombre\n");
scanf("%d",&nombre2);
printf(" %d + %d = %d\n", nombre1, nombre2, nombre1 + nombre2);
getchar();
return 0;
}
@+
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
11 juil. 2009 à 17:36
11 juil. 2009 à 17:36
Oui, t'as corrigé les petites imperfections du programme, mais tu n'as pas corrigé le fait que la fenêtre se ferme aussitôt.
Il faut doubler le getchar() final car le premier getchar() sera annihilé par le '\n' stocké dans le buffer clavier.
Cdlt
Il faut doubler le getchar() final car le premier getchar() sera annihilé par le '\n' stocké dans le buffer clavier.
Cdlt
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
12 juil. 2009 à 17:12
12 juil. 2009 à 17:12
Salut,
Voici un programme fonctionnel dont la fenêtre ne se fermera pas à la fin.
Par contre, je n'ai pas mis la gestion d'erreur, du genre si l'utilisateur rentre un nombre trop grand ou rentre des lettres.
Voici un programme fonctionnel dont la fenêtre ne se fermera pas à la fin.
Par contre, je n'ai pas mis la gestion d'erreur, du genre si l'utilisateur rentre un nombre trop grand ou rentre des lettres.
#include <stdio.h> int main(void){ int nombre1,nombre2; printf("choisis ton nombre\n"); scanf("%d" ,&nombre1); printf("choisis ton nombre\n"); scanf("%d",&nombre2); getchar(); printf("%d + %d = %d\n",nombre1,nombre2,nombre1+nombre2); getchar(); return 0; }
guitarist3
Messages postés
62
Date d'inscription
vendredi 10 juillet 2009
Statut
Membre
Dernière intervention
29 décembre 2012
19
11 juil. 2009 à 17:20
11 juil. 2009 à 17:20
efface "getchar ()" mais appart sa je vois que l'on est au meme niveau sur le site du zéro comme par hasrad on est tous les 2 au mem chapitre sauf que moi je l'ai réussi^^ moi j'utilise Dev C++ car il est plus souvent mis a jour .
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
11 juil. 2009 à 17:21
11 juil. 2009 à 17:21
moi j'utilise Dev C++ car il est plus souvent mis a jour
Euh tu dois confondre. DevC++ n'est plus mis à jour depuis quelques années ^^.
Euh tu dois confondre. DevC++ n'est plus mis à jour depuis quelques années ^^.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
guitarist3
Messages postés
62
Date d'inscription
vendredi 10 juillet 2009
Statut
Membre
Dernière intervention
29 décembre 2012
19
11 juil. 2009 à 17:23
11 juil. 2009 à 17:23
Fiddy t'utilise quoi alors??
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
11 juil. 2009 à 17:27
11 juil. 2009 à 17:27
Si tu veux absolument un IDE pour la facilité, tu peux utiliser Code::Blocks.
Pour ma part, je préfère utiliser un éditeur de texte + un compilateur séparément. (Vim + Gcc).
Pour ma part, je préfère utiliser un éditeur de texte + un compilateur séparément. (Vim + Gcc).
ilusion2
Messages postés
5
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009
12 juil. 2009 à 15:54
12 juil. 2009 à 15:54
Bonjour,
Merci a tous pour vos explications cela me permet de progresser.Encore mille mercis ( surtout a fiddy pour ces explications claires et précises) @+ keep it touch.
Merci a tous pour vos explications cela me permet de progresser.Encore mille mercis ( surtout a fiddy pour ces explications claires et précises) @+ keep it touch.
ilusion2
Messages postés
5
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009
12 juil. 2009 à 16:03
12 juil. 2009 à 16:03
Bonjour,
J'ai suivi vos conseils cependant pendant l'execution du programme, il me marque:"Exception non gérée à 0x60996af2 dans calcul.exe : 0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0x00000000."Et ensuite le choix entre arreter ou continuer. Que dois-je faire.Merci de toutes suggestions...
J'ai suivi vos conseils cependant pendant l'execution du programme, il me marque:"Exception non gérée à 0x60996af2 dans calcul.exe : 0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0x00000000."Et ensuite le choix entre arreter ou continuer. Que dois-je faire.Merci de toutes suggestions...
ilusion2
Messages postés
5
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009
12 juil. 2009 à 16:07
12 juil. 2009 à 16:07
Bonjour,
Je n'ai toujours pas trouvé la cause du message ci-dessus mais le programme donné par chuko n'affiche ce message et marche parfaitement pourquoi ?Merci...
Je n'ai toujours pas trouvé la cause du message ci-dessus mais le programme donné par chuko n'affiche ce message et marche parfaitement pourquoi ?Merci...
ilusion2
Messages postés
5
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009
17 juil. 2009 à 15:53
17 juil. 2009 à 15:53
Bonjour,
Merci a tous pour vos conseils, j'ai progressé et maintenant je test un programme dont le principe est le suivant:
.L'ordinateur tire au sort un nombre entre 1 et 100
.Il vous demande de deviner le nombre. Vous rentrez donc un nombre entre 1 et 100
.L'ordinateur compare le nombre que vous avez rentré avec le nombre "mystère" qu'il a tiré au sort. Il vous dit si .le nombre mystère est supérieur ou inférieur à celui que vous avez entré
.Puis, l'ordinateur vous redemande le nombre.
... Et il vous indique si le nombre mystère est supérieur ou inférieur.
.Et ainsi de suite, jusqu'à ce que vous ayez trouvé le nombre mystère. (source: le site du zero).
Pour l'instant j'ai debuter mon programme comme ceci:
#include <stdio.h>
#include <stdlib.h>
int main()
{ int nombredujeu=0,nombremystere=10; //ici je declare mes variables
printf("choisis ton nombre\n"); //on demande au joueur de choisir son nombre
scanf("%d\n");//il le choisis
if(nombredujeu<10) //et ici je demande de tester 'si le nombre choisis est< au nombre mystere alors il affiche desole ect...
{
printf("desole c'est plus\n");
}
return 0;
getchar();
}
Pour l'instant c'est juste le test qui permet de dire: voila si c'est plus petit alors ect...
Leproblème est que après avoir compiler avec succes le programme ne s'execute pas comme je le voudrais et affiche le message suivant: Exception non gérée à 0x5fd96af2 dans TP.exe : 0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0x00000000.
J'ai donc 2 questions a vous demander: 1) Que veux dire c emessage
2) Ou est le probleme dans mon programme ?
merci a tous pour votre aide vous etes geniaux!
Merci a tous pour vos conseils, j'ai progressé et maintenant je test un programme dont le principe est le suivant:
.L'ordinateur tire au sort un nombre entre 1 et 100
.Il vous demande de deviner le nombre. Vous rentrez donc un nombre entre 1 et 100
.L'ordinateur compare le nombre que vous avez rentré avec le nombre "mystère" qu'il a tiré au sort. Il vous dit si .le nombre mystère est supérieur ou inférieur à celui que vous avez entré
.Puis, l'ordinateur vous redemande le nombre.
... Et il vous indique si le nombre mystère est supérieur ou inférieur.
.Et ainsi de suite, jusqu'à ce que vous ayez trouvé le nombre mystère. (source: le site du zero).
Pour l'instant j'ai debuter mon programme comme ceci:
#include <stdio.h>
#include <stdlib.h>
int main()
{ int nombredujeu=0,nombremystere=10; //ici je declare mes variables
printf("choisis ton nombre\n"); //on demande au joueur de choisir son nombre
scanf("%d\n");//il le choisis
if(nombredujeu<10) //et ici je demande de tester 'si le nombre choisis est< au nombre mystere alors il affiche desole ect...
{
printf("desole c'est plus\n");
}
return 0;
getchar();
}
Pour l'instant c'est juste le test qui permet de dire: voila si c'est plus petit alors ect...
Leproblème est que après avoir compiler avec succes le programme ne s'execute pas comme je le voudrais et affiche le message suivant: Exception non gérée à 0x5fd96af2 dans TP.exe : 0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0x00000000.
J'ai donc 2 questions a vous demander: 1) Que veux dire c emessage
2) Ou est le probleme dans mon programme ?
merci a tous pour votre aide vous etes geniaux!