Aidez moi pour une calculette en C

pingouf Messages postés 1 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 15 mars 2004 - 15 mars 2004 à 10:26
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 15 mars 2004 à 13:11
Bonjour, j'ai besoin d'aide pour réaliser une calculette en C. Je suis un tout jeune programmeur et le début est toujours difficile aidez moi svp.
Je dois faire la réalisation d'une calculette de 5 opérations ( addition, soustraction, multiplication, division et reste) opérant sur des données décimales stockées sous forme de chaînes de caractères (50 maximum ).
Chaque opération est réalisée par une fonction spécifique qui peut elle-même utiliser des sous-fonctions. Ces fonctions seront nommées ADD,SOUS,DIV,MUL, MOD ( modulo code % en C).
La fonction ADD sera réalisée en Assembleur et le reste en C.

Chaque zone de données est une structure DONN_DECI composée de :
- Un long NBR_OCT donnant le nombre utile d'octets de la donnée
- Un tableau de char DONN contenant la donnée en caractères décimaux.

Les arguments sont déclarés de la façon suivante dans les fonctions :
ADD(struct DONN_DECI*NBRE_1,struct DONN_DECI*NBR_2)

Le résultat est un pointeur sur une structure DONN_DECI.
Le résultat ne doit pas être une variable locale.

La fonction main doit accepter une option -c pour positionner un booléen commandant des impressions de contrôle nécessaires pour la mise au point.

Cette fonction effectue une boucle enchaînant les opérations suivantes :

Lecture du premier opérande
Lecture du code de l'opération (+ * - / %)
Lecture du deuxième opérande

Vérification des caractères de chaque opérande et du code opération
Si vérification correcte exécution et affichage du résultat
La boucle s'arrete pas Ctrl-D ou détection de la lettre q en 1ère position d'un opérande.

Il faut gérer le nombre de chiffres du résultat
Il est utile ppour faciliter les opérations ADD et SOUS d'avoir des zones de même longueur en ajoutant des "0" à gauche du plus petit (123+5 devient 123 +005)
Pour la multiplication il faut prévoir une multiplication à 1 chiffre et une addition décalée selon l'exemple (123*45=(123*4)*10+123*5

La multiplication par 10 est obtenue pas un décalage à gauche du nombre et mise d'un "0" à la fin.
La division et le modulo sont obtenus en même temps ; seul le résultat retourné change.
La division s'effectue par la suite de soustractions décalées et de comparaisons.

Merci de bien vouloir m'aider à faire ce sujet.
Si cela ne vous dérange pas me donner le programme avec des explications serait tres aimable de votre part.
Merci d'avance.
Je vous presente ici mon adresse e-mail si vous voulez bien m'envoyer le programme :
pingouf@hotmail.com

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 mars 2004 à 11:00
J'y crois pas, de plus mal en plumeau.
Maintenant on demande son devoir fourni au complet et livre.
Au moins tu montrerais ton debut de travail et tu demanderais explications sur points precis, pas de prob pour avoir de l'aide, mais la on se fout du monde !!!

ciao...
BruNews, Admin CS, MVP Visual C++
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
15 mars 2004 à 11:05
Et un café aussi ?

moi aussi, j'ai programme à faire, si vous voulez bien venir vous lever le matin pour aller bosser à ma place, ca serait bien aimable.

Sérieusement, ceci est un forum d'entraide, on est pas là pour faire ton boulot.
Entraide ca veut dire par exemple, j'ai fait une grosse partie, j'ai fait l'addition en assembleur mais je sais pas comment l'integrer dans mon code c. Et la, les entraideurs te parlent de __asm
Ou bien, j'ai regardé dans msdn, et j'ai trouvé la fonction getMachinBidule, mais là j'ai une erreur retournée par getlasterror, d'ou ca vient ?

Voila, y a un moment ou faut se sortir le poil de la main, commence à bosser, et si tu bloques sur un point précis (plus il est précis, et plus c'est facile de t'aider), c'est à ce moment là que les entraideurs rentreront en action.

Pour ton problème, pense deja à l'algo général, découpe en fonctions et affine au fur et à mesure

Cordialement
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
15 mars 2004 à 13:11
commence par taper "calculatrice" dans la zone de recherche, tu trouvera pas mal d'exemple fait par d'autres.
0
Rejoignez-nous