2009-09-25 5 views
1

J'essaye d'écrire un simple script de calculateur C, en utilisant seulement le +, -, /, * de base. J'ai ce qui suit, mais je ne suis pas sûr de savoir pourquoi il ne s'imprime pas correctement.Création d'une calculatrice simple en C

#include<stdio.h> 
#include<stdlib.h> 

int main (void) 
{ 

    //introduce vars 
    double number1, number2, result; 
    char symbol; //the operator *, -, +,/

    //allow user interaction 
    printf("Enter your formula \n"); 
    scanf("%f %c %f", &number1, &symbol, &number2); 

    switch (symbol) { 
     case '+': 
      result = number1 + number2; 
      break; 
     default: 
      printf("something else happened i am not aware of"); 
      break; 
    } 

    getchar(); 
    return 0; 
} 

Pourquoi le résultat n'est-il pas imprimé? Est-ce que je fais ici quelque chose de mal,

result = number1 + number2; 
+0

Vous avez besoin d'un printf ("% i", résultat); avant votre getchar(); – luke

+0

Je vous vois mis à jour un post avec un commentaire. Pouvez-vous poster votre code le plus récent? –

+1

Note: Ce qui précède est incorrect et ne calcule pas parce que je déclare mes vars comme doubles, puis plus tard dans le code les appelle flottants. C'était un énorme problème :) –

Répondre

6

« Pourquoi est le résultat non en cours d'impression? "

Vous calculer la réponse correctement, mais ne imprime pas partout.

Vous devez avoir quelque chose comme:

printf("Answer: %f + %f = %f\n", number1, number2, result); 

Sans une déclaration d'impression, rien est imprimé.


EDIT Répondre au commentaire:

Avez-vous fait le printf après vous calculez le résultat? Personnellement, je mettrais le printf juste avant le getchar();

Pour plus de débogage, juste après votre scanf, j'écrirait:

printf("Input as received: number1 is %f\n number2 is %f\nsymbol is %c\n", number1, number2, symbol); 

Si cela ne montre pas l'entrée que vous avez tapé, alors quelque chose ne va pas avec la façon dont vous vous réunissez entrée.

+0

Je l'utilise pour le tester et je ne reçois rien. Juste 0.00000000 + 0.000000 = 0.000000000 case '+': \t \t \t printf ("Réponse:% f +% f =% f \ n", numéro1, numéro2, résultat); \t \t \t \t rupture; Désolé je suis en train de comprendre; ( –

+0

Ah je vois, merci :) Je vois. –

+0

mon erreur ci-dessus dans mon code faisait que cela ne fonctionne pas avec votre exemple. Cependant, vous aviez raison et j'apprécie grandement votre réponse. –

17

Vous imprimez jamais le résultat ...

Vous devez d'ajouter quelque chose comme ceci:

printf("Result: %f", result); 
0
/* I think I see the problem; you're trying to reinvent the wheel. */ 
#include &lt;stdio.h> 
#include &lt;stdlib.h> 

int main (void) 
{ 
    system("/bin/bc"); 
    return 0; 
} 
+0

Je ne comprends pas. –

+0

Tater, il existe un programme linux appelé "bc" qui est un programme de calcul très bien mis en œuvre. Le code ci-dessus l'exécute simplement. Mon point est, vous voyagez un chemin de codage qui est déjà bien voyagé; vous réinventez la roue. Désolé je n'étais pas plus clair. – pbr

+0

Je pense que c'était un exercice d'apprentissage, pas de pavage de nouvelles routes;) – dharga