Calculatrice de grand nombre en language C avec les tableaux

Fermé
peko - Modifié le 6 nov. 2021 à 08:41
 Peko - 6 nov. 2021 à 09:08
Bonjour,
j'ai besoin d'aide parce que je dois crée une calculatrice avec les tableaux cette calculatrice doit faire lesoperation suivante - + / %
je n'y arrive pas du tous . j'ai besoin d'aide svp


1 envoi
• Il est formellement interdit de recopier des lignes de code d'une tierce personne. Toute tricherie avérée entraînera la note de zéro (l'entraide reste bien sûr autorisée et encouragée).
• Les seules fonctions de la libC autorisées sont printfet scanf.
2 Le travail
Vous devez faire un programme dans un fichier calcul.cpermettant de faire des opérations arithmétiques sur des grands nombres. Votre programme devra lire sur l'entrée standard quelque chose du type :
m1 m2 m3
où :
• Les variables , et sont des nombres entiers pouvant comporter jusqu'à 100 chiffres.m1m2m3
• Les nombres , et peuvent être négatifs, auquel cas ils commencent par le signe `-'.m1m2m3
• Les signes  et sont tous les deux un des opérateurs suivant :
◦ '-' pour la soustraction
◦ '+' pour l'addition
◦ '*' pour la multiplication
◦ '/' pour la division entière
◦ '%' pour le reste de la division entière
• Il peut y avoir autant d'espaces que l'on veut (y aucun espace) entre les nombres et les différents opérateurs (y compris le moins unaire, indiquant qu'un nombre est négatif).
• Le deuxième opérateur △avec l'opérande n3sont facultatifs. Ils peuvent apparaître ou ne peuvent pas apparaître.
• Votre programme s'arrête de lire quand il arrive au caractère '\n'.
Une fois que votre programme a lu le calcul à faire (cette lecture se termine quand on atteind le caractère '\n'), il doit afficher le résultat de ce calcul sur la sortie standard, suivit d'un retour à la ligne, puis il doit s'arrêter et retourner 0. De plus votre programme doit tenir compte de la priorité des opérateurs ∗,/et %sur les opérateurs +et −. On pourra supposer que l'entrée est toujours correcte (et en particulier qu'il n'y a pas de divisions par zéro).
Vous pouvez utiliser le programme bcpour tester votre projet. La comande
echo "3+4*2" | bc
affiche le résultat du calcul "3+4*2", tout comme doit faire votre programme. La variable d'environnement BC_LINE_LENGTHindique la longueur des lignes affichées par bc. Par défaut BC_LINE_LENGTHune valeur de 100, ce qui veut dire qu'un nombre de 250 chiffres sera affiché sur 3 lignes. Contrairement à bc, Votre programme ne doit bien sûr jamais revenir à la ligne avant d'afficher tout le résultat. Vous pouvez modifier BC_LINE_LENGTHde la manière suivante :
export BC_LENGTH_LINE=1000
Voici un exemple d'exécution de votre programme :
$ gcc -o calcul calcul.c
$ echo " 234 + - 22 * 58 " | ./calcul | cat -e
-1042$
$ echo "100374647382947463*28476463839746376382-163748" | ./calcul | cat -e
2858315016627796681514500552929855118$
$
Il y a plusieurs manières de considérer le modulo sur les nombres négatifs. On utilie ici la même convention que bc, c'est à dire :
• −a % b=−(a % b)
• a % −b=a % b.
Conseils :
• Ne paniquez pas.
• Une méthode possible :
1. Stockez chaque entier dans un tableau de taille 100 (chaque case doit contenir un chiffre de l'entier).
2. Déterminez la taille maximale que doit avoir un tableau pour contenir le résultat (un tableau de taille 1000 devrait suffir quoi qu'il arrive).
3. Pour chaque opération, ayez une fonction, qui appliquera l'algorithme correspondant, chiffre par chiffre, comme vous faisiez à l'école primaire, et stoquera le résultat dans un troisième paramètre (tableau de taille 1000).

1 réponse

Xileh Messages postés 19227 Date d'inscription dimanche 10 janvier 2016 Statut Modérateur Dernière intervention 13 février 2025 6 381
6 nov. 2021 à 08:44
Bonjour

=> https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

Bref, si tu appliques les instructions données dans la fiche ci-dessus et que tu rencontres certaines difficultés, peut-être que quelqu'un pourra t'aider à passer telle ou telle étape...
Par-contre personne ne fera le devoir à ta place...



1
J’ai pas demander qu’on me face un devoir à ma place , c’est vrai que que je n’est pas été assez précis .
J’ai juste des problèmes avec des fonctions de calculs
0