une calculette en language C

J£$µ$

Membre confirmé
20 Décembre 2004
12
0
34
boujour ,
je programme une calculette en C et je n'arrive pa a fair le choi de l'operateur
je sai juste faire le choi des chiffre
et si je replace le signe pa une lettre et ke g declaree a et b comme des chiffre , c comme un operateur et ac comme le resultat par exemple et ke note :

ac=acb

logikement il me demande de declaree ossi acb ....

merci de me dire comment faire. :)
 
Bonsoir,

Je ne comprends pas non plus...

Essaie de soigner un mimimum ton orthographe, le langage SMS, on n'aimes pas trop ici.
Rien ne motive plus une réponse, qu'une question claire et propre : on se dit, le gars a passé plus de 30 secondes à poser la question, passons un quart d'heure à lui répondre...

Cordialement
 
Didier Guillion a dit:
Essaie de soigner un mimimum ton orthographe, le langage SMS, on n'aimes pas trop ici d'ailleurs.
Non en effet, on n'aime pas ici comme sur les autres forums d'ailleurs. Donc essaie de t'exprimer de manière compréhensible, c'est dans ton intérêt si tu veux obtenir des réponses. Merci.


PS pour Didier: on dit "on n'aime" sans "s" il me semble ?! :p
 
ok je v aisseyer de soigner mon ecriture.
voici mon programme:

#include <stdio.h>
int main(void)
{
float A,B,R;
puts ("valeur de A:");
scanf("%f",&A);
puts ("valeur de B:");
scanf("%f",&B);
R=A*B;
printf("R=%f\n",R);
}

voila je voudrai savoir comment avoir le choix de l'operateur. merci.
 
J£$µ$ a dit:
ok je v aisseyer de soigner mon ecriture.
voici mon programme:

#include <stdio.h>
int main(void)
{
float A,B,R;
puts ("valeur de A:");
scanf("%f",&A);
puts ("valeur de B:");
scanf("%f",&B);
R=A*B;
printf("R=%f\n",R);
}

voila je voudrai savoir comment avoir le choix de l'operateur. merci.

De la meme maniere que tu saisis une valeur de type float avec %f, tu peut saisir une chaine de caractere, via %s. Tu comparera ensuite
ta chaine aux differents operateurs (+,-,*,/)

Par exemple,

char chaine[255];

puts("Donnez l'operateur");
scanf("%s",chaine);
if(!strcmp(chaine,"+")) ...
else if(!strcmp(chaine,"-")) ...
else printf("Je ne connnais pas cet operateur");

Mais pour une interface plus ergonomique, le mieux serait d'integrer ton code à du Cocoa.

Cordialement
 
Et peut être la façon la plus élégante d'implémenter ce type d'application :) A méditer pour ceux qui se demandent depuis 20 ans pourquoi HP s'était aventuré la-dedans pour ces calculatrices :O
 
ntx a dit:
Et peut être la façon la plus élégante d'implémenter ce type d'application :) A méditer pour ceux qui se demandent depuis 20 ans pourquoi HP s'était aventuré la-dedans pour ces calculatrices :O

Personelement, je préfère cette manière, y a pas 50 parenthèses :up:


Sinon pour le programme c'est plus beau avec un switch plutôt que des elseif non ? :siffle:

Voici un exemple de code d'une calculatrice "complète" mode console :D
Ca le code d'un de mes cours de l'année passée, on commentait en anglais désolé si tu es anglophobe !!!


IMPORTANT : pour compiler avec gcc, si tu ne stipules pas que c 'est du C99 (qui a certains avantages du c++), gcc va t'envoyer bouler :D !!!

Pour compiler : gcc --std=c99 --pedantic lefichier.c

**********************
#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>

static int fastExponentiation(int base, int exponent);


static int fastExponentiation(int base, int exponent)
{
int a = 1;
int b = base;
int c = exponent;

// Loop invariant : a*(b^c) = base^exponent.
while (c) {
if (c % 2)
a = a * b;

b = b * b;
c = c / 2;
}

// Postcondition : c == 0, thus base^exponent = a.
return a;
}

/**
* Main function.
**/

int main()
{
int currentValue;

// Read the first operand
printf("Entrez la valeur initiale : ");

int readArguments;
readArguments = scanf("%d", &currentValue);

if (readArguments != 1) {
printf("Vous n'avez pas entrÈ un nombre !");
return -1;
}

// Loop forever
while (true) {
// Display the current value
printf("Valeur actuelle : %d\n", currentValue);
printf("Entrez un opÈrateur et une opÈrande : ");

// Read the new operator
int operator;
do {
operator = getchar(); // Try reading a new character
} while (operator != EOF && // Stop when reaching the end of the input
isspace(operator)); // Loop until reaching a non-blank char.

if (operator == EOF) { // The end of the input has been reached
printf("Vous avez mal formattÈ votre opÈrateur !\n");
return -1;
}

if (operator == 'q') // The user wants to stop the calculation
break;

// Read the new operand
int operand;
readArguments = scanf("%d", &operand);

if (readArguments != 1) {
printf("Vous avez mal formattÈ votre opÈrande !\n");
return -1;
}

// Operator handling
switch (operator) {
case '+' : currentValue += operand; break; // Addition case
case '-' : currentValue -= operand; break; // Substraction case
case '*' : currentValue *= operand; break; // Multiplication case

case '/' : // Division case
if (!operand) { // Division by zero handling
printf("Tentative de division par zÈro !\n");
return -1;
}

currentValue /= operand;
break;

case '^' : // Integer power case
if (operand < 0) { // Negative power handling
printf("Elevation ? une puissance nÈgative !\n");
return -1;
}

currentValue = fastExponentiation(currentValue, operand);
break;

default : // Default case : error
printf("OpÈrateur inconnu !\n");
return -1;
}
}

return 0;
}
 
  • J’aime
Réactions: GrandGibus
BeNBiBiFoKe a dit:
Ca le code d'un de mes cours de l'année passée, on commentait en anglais désolé si tu es anglophobe !!!

C'est bien d'apprendre aux élèves à commenter en anglais... car il serait très présomptueux de deviner l'avenir du code que l'on écrit...

D'expérience, ça m'est déjà arrivé de partager du code avec des hollandais, chinois et américains... fait par des français au départ... et s'il n'y avait pas eu les commentaires en anglais dès le début.... je vous laisse imaginer la suite !

Ca ça mérite un coup de boule :zen:
 
GrandGibus a dit:
C'est bien d'apprendre aux élèves à commenter en anglais... car il serait très présomptueux de deviner l'avenir du code que l'on écrit...

Je suis tout à fait d'accord avec toi :)

Certains pro-fr m'ont déjà accusé de poster un code qui n'est pas à moi sous prétexte que c'était commenté en anglais (et que c'était complètement débile en plus) :D