Se connecter / S'enregistrer

Résolu Opérations mathématiques en C - débutant

Solutions (7)
Tags :
  • Calculatrice
  • Programmation
|
Salut tout le monde.
Je suis un gros, mais alors très gros débutant (pour rester poli) en C.
J'apprends sur le site du zéro.
L'exercice consiste à créer une mini-calculette (avec les 4 opérations de base).
Seulement, j'ai un problème bizarre.
Seules l'addition et la soustraction fonctionnent.
Pour la multiplication et la division, le résultat est toujours 0.
Voici le code, si quelqu'un peut m'aider, merci d'avance. ;) 

Citation :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])

{
double nombre1=0, nombre2=0, resultat=0;
int nombreEntre=0;
printf("Bonjour!\nQuelle operation voulez vous faire ?\n\n 1.Une addition\n 2.Une soustraction\n 3.Une multiplication\n 4.Une division\n\nTapez le nombre correspondant a votre choix, ou tapez 5 pour quitter.\n");
scanf("%d", &nombreEntre);

switch (nombreEntre)
{
case 1:
{
printf("Entrez le nombre 1.\n");
scanf ("%d", &nombre1);
printf("Entrez le nombre 2.\n");
scanf("%d", &nombre2);
resultat = nombre1 + nombre2;
printf("Le resultat de votre addition est %d.\n", resultat);
}
break;


case 2:
{
printf("Entrez le nombre 1.\n");
scanf ("%d", &nombre1);
printf("Entrez le nombre 2.\n");
scanf("%d", &nombre2);
resultat = nombre1 - nombre2;
printf("Le resultat de votre soustraction est %d.\n", resultat);
}
break;

case 3:
{
printf("Entrez le nombre 1.\n");
scanf ("%d", &nombre1);
printf("Entrez le nombre 2.\n");
scanf("%d", &nombre2);
resultat = nombre1 * nombre2;
printf("Le resultat de votre multiplication est %d.\n", resultat);
}
break;


case 4:
{
printf("Entrez le nombre 1.\n");
scanf ("%d", &nombre1);
printf("Entrez le nombre 2.\n");
scanf("%d", &nombre2);
resultat = nombre1 / nombre2;
printf("Le resultat de votre division est %d.\n", resultat);
}
break;


default:
printf("Au revoir!\n");
break;
}
return 0;
}


Contenus similaires
  • Autres pages sur : operations mathematiques debutant
Meilleure solution
partage
|
Idem dans le scanf (qui remplit un double encodée de façon particulière avec un int en brut, ce qui doit donner un nombre avec une puissance de 10 très faible, donc 0 après un cast implicite).
  • Commenter cette solution |
Score
0
òh
òi
|
tu dois corriger tes appels à la fonction printf : %d n'est pas fait pour afficher des types double ...
  • Commenter cette réponse |
Score
0
òh
òi
|
D'accord, j'essaye ça tout de suite! :bounce: 

Edit: Marche toujours pas. :( 
Edit 2 : Ça fonctionne. Mais comment dois-je faire pour que les nombres décimaux soient pris en compte ?
  • Commenter cette réponse |
Score
0
òh
òi
|
ou encore

resultat = (float)nombre1 / (float)nombre2;

  • Commenter cette réponse |
Score
0
òh
òi
|
salut,

essayes :

resultat = (long)nombre1 / (long)nombre2;

powar
  • Commenter cette réponse |
Score
0
òh
òi
|
Peut-être une autre idée ? :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Enleve deja les accolades pour chaque case.

  1. case 1:
  2. //code
  3. break;
  4. case 2:
  5. //code
  6. break;
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS