Programmation en c
Résolu/Fermé
limbergh
-
25 nov. 2007 à 18:28
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 - 25 nov. 2007 à 19:45
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 - 25 nov. 2007 à 19:45
A voir également:
- Programmation en c
- Application de programmation - Guide
- Mettre en veille un programme - Guide
- Programmation logo tortue télécharger - Télécharger - Études & Formations
- Programmation télécommande porte de garage brico depot - Forum Matériel & Système
8 réponses
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
25 nov. 2007 à 19:35
25 nov. 2007 à 19:35
c'est pour eviter que operateur soit egal au caractere '\n'
mais tu peux aussi utiliser la solution de lami20j
et metre un getchar
mais tu peux aussi utiliser la solution de lami20j
et metre un getchar
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
25 nov. 2007 à 18:45
25 nov. 2007 à 18:45
ton operateur il faut que ça soit un caractere et avant le printf il faut faire le calcul tu as aussi d'autre petites erreur que j'ai corrigé voici ce que ça donne
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int resultat=0, nombre1=0, nombre2=0; char operateur ; printf("entrez le 1er nombre :"); scanf("%ld", &nombre1); printf("entrez un operateur :"); scanf("%c""%c", &operateur,&operateur); printf("entrez le 2eme nombre :"); scanf("%ld", &nombre2); if (operateur =='*') { resultat=nombre1*nombre2; printf("%d %c %d=%d\n", nombre1, operateur, nombre2, resultat); } else if (operateur == '/') { resultat=nombre1/nombre2; printf("%d %c %d=%d\n", nombre1,operateur, nombre2, resultat); } else if (operateur == '-') { resultat=nombre1-nombre2; printf("%d %c %d=%d\n", nombre1,operateur, nombre2, resultat); } else if (operateur == '+') { resultat=nombre1+nombre2; printf("%d %c %d=%d\n", nombre1,operateur, nombre2, resultat); } system("PAUSE"); return 0; }
Bonsoir,
L'idée est bonne mais il y a quelques petits problèmes. En première approche :
scanf("%ld", &operateur); n'est pas bon : opérateur est un caractère, le format pour le lire et l'imprimer est %c et non pas %ld
le caractère * en C se note '*' (apostrophe simple). avec des apostrophes doubles, tu définis une chaîne de caractères, ce qui n'est pas du tout la même chose
if (operateur ='*') : l'erreur la plus classique chez les débutants en C. La comparaison c'est ==. Avec un seul =, tu donnes à la variable operateur la valeur '*'
dans ta série de if .. else if .. tu oublies de calculer resultat
enfin, dans tes printf, pourquoi ce & qui se promène ? En plus, avec un espace entre ce & et le nombre1, ça métonnerait que ton compilateur apprécie.
Tu es sur la bonne voie, continue
L'idée est bonne mais il y a quelques petits problèmes. En première approche :
scanf("%ld", &operateur); n'est pas bon : opérateur est un caractère, le format pour le lire et l'imprimer est %c et non pas %ld
le caractère * en C se note '*' (apostrophe simple). avec des apostrophes doubles, tu définis une chaîne de caractères, ce qui n'est pas du tout la même chose
if (operateur ='*') : l'erreur la plus classique chez les débutants en C. La comparaison c'est ==. Avec un seul =, tu donnes à la variable operateur la valeur '*'
dans ta série de if .. else if .. tu oublies de calculer resultat
enfin, dans tes printf, pourquoi ce & qui se promène ? En plus, avec un espace entre ce & et le nombre1, ça métonnerait que ton compilateur apprécie.
Tu es sur la bonne voie, continue
salut Mype,
merci pour tes corrections, il fonctionne mais j'ai toujours après les calclul un chiffre aléatoire qui s'affiche avant le résultat.
Je ne comprend pas pourquoi. Et toi?
encore merci pour ton aide
merci pour tes corrections, il fonctionne mais j'ai toujours après les calclul un chiffre aléatoire qui s'affiche avant le résultat.
Je ne comprend pas pourquoi. Et toi?
encore merci pour ton aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 nov. 2007 à 19:10
25 nov. 2007 à 19:10
Salut,
chez moi, fonctionne bien (compilé avec gcc sous GNU/Linux Debian)
affiche ce que tu fait pour voir
chez moi, fonctionne bien (compilé avec gcc sous GNU/Linux Debian)
affiche ce que tu fait pour voir
entrez le 1er nombre :450
entrez un operateur :/
entrez le 2eme nombre :10
2293616 / 10=45
Appuyez sur une touche pour continuer...
Voilà ce qu'affiche l'invité de commande
entrez un operateur :/
entrez le 2eme nombre :10
2293616 / 10=45
Appuyez sur une touche pour continuer...
Voilà ce qu'affiche l'invité de commande
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
25 nov. 2007 à 19:23
25 nov. 2007 à 19:23
chez moi ça fonctionne...
entrez le 1er nombre :450 entrez un operateur :/ entrez le 2eme nombre :10 450 / 10=45 Appuyez sur une touche pour continuer... Process returned 0 (0x0) execution time : 15.787 s Press any key to continue.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 nov. 2007 à 19:28
25 nov. 2007 à 19:28
Essaie comme ça
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int resultat=0, nombre1=0, nombre2=0; char operateur ; printf("entrez le 1er nombre :"); scanf("%ld", &nombre1); getchar(); printf("entrez un operateur :"); scanf("%c", &operateur); printf("entrez le 2eme nombre :"); scanf("%ld", &nombre2); if (operateur =='*') { resultat=nombre1*nombre2; printf("%d %c %d=%d\n", nombre1, operateur, nombre2, resultat); } else if (operateur == '/') { resultat=nombre1/nombre2; printf("%d %c %d=%d\n", nombre1,operateur, nombre2, resultat); } else if (operateur == '-') { resultat=nombre1-nombre2; printf("%d %c %d=%d\n", nombre1,operateur, nombre2, resultat); } else if (operateur == '+') { resultat=nombre1+nombre2; printf("%d %c %d=%d\n", nombre1,operateur, nombre2, resultat); } system("PAUSE"); return 0; }
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
>
limbergh
25 nov. 2007 à 19:45
25 nov. 2007 à 19:45
apres avoir tapé le 1er nombre tu tape entréé le getchar rentre le caractere '\n' dans le buffer pour eviter que operateur soit egale '\n'