Posez votre question Signaler

Calculatrice(langage C)

souzen 41Messages postés dimanche 12 octobre 2008Date d'inscription 5 janvier 2009 Dernière intervention - Dernière réponse le 7 févr. 2015 à 20:24
Bonjour,
svp aidez moi a faire ce programme
Ecrire un programme qui fait le travail d'une calcutrice
avec les fonctions et les pointeurs
et merci d'avance
Lire la suite 
Réponse
+18
moins plus
voila ce que j'ai fait dans le programme de la calculatrice
#include<stdio.h>
#include<conio.h>
main()
{
clrscr();
char op;
int a,b;
printf("Donner l'opérande a:");
scanf("%d",&a);
printf("Donner l'opérateur (+,-,*,/,%)");
scanf("%c",&op);
printf("Donner l'opérande b:");
scanf("%d",&b);
switch(op)
{
case'+':printf("%d+%d=%d",a,b,a+b);break;
case'-':printf("%d-%d=%d",a,b,a-b);break;
case'*':printf("%d*%d=%d",a,b,a*b);break;
case'/':if(b)
printf("%d/%d=%d",a,b,a/b);break;
else
printf("Impossible division par 0");break;
case'%':if(b)
printf("%d%%%d=%d",a,b,a%b);break;
else
printf("Erreur division par 0");break;
dfault:printf("Opérateur non accepté");
}
getch();
}
voila ce que j'ai fait
mais le problème c'est je dois faire la fonction qui fait ce travail pr plus de 2 nombres et la je trouve des difficultés
pyschopathe 1965Messages postés dimanche 2 mars 2008Date d'inscription 22 mars 2010 Dernière intervention - 24 oct. 2008 à 21:28
De quelle forme doit être l'entrée du programme ? Par exemple, est-ce que tu veux faire quelque chose comme :

"Saisissez le nombre d'opérateurs : "
"Saisissez l'opérateur 1 : "
...
"Saisissez l'opérande 1 : "
...

ou plutôt :

"Saisissez le calcul à effectuer : " // ex : 7 + 45 * 5

Est-ce que tu dois gérer la priorité des opérateurs ?

Le programme risque d'être assez compliqué...
Répondre
jonee- 24 nov. 2011 à 15:53
Oui en effet tres compliquer et cela juste pour les 4 operations de base tout en gerant les priorite des operateurs

personnellement je n'y arrive toujours pas ....
Répondre
Macdum- 10 mars 2012 à 23:31
Va sur se site tu pourra mieu comprendre et regarde en bas de la page dans les commentaire il y a ce que tu cherche
http://www.siteduzero.com/tutoriel-3-13956-les-conditions.html
Répondre
Anass Hassoun- 14 janv. 2013 à 18:44
#include<stdio.h>
#include<string.h>
#include<math.h>

main()
{
char c[100];
int i,s1,r,j,ind,s;
for(j=1;j>0;j++)
{

gets(c);

for(i=0;i<strlen(c);i++)
{

if(c[i]=='+')
{
ind=i;

break;
}
if(c[i]=='*')
{
ind=i;

break;
} if(c[i]=='/')
{
ind=i;

break;
} if(c[i]=='-')
{
ind=i;

break;
}
}
if(ind==3||ind==5)

{

s=1;

}
else
{
s=0;

}

for(i=0;i<ind;i++)
{
if(c[i]=='1')
s=s+pow(10,ind-1-i);
if(c[i]=='2')
s=s+2*pow(10,ind-1-i);
if(c[i]=='3')
s=s+3*pow(10,ind-1-i);
if(c[i]=='4')
s=s+4*pow(10,ind-1-i);
if(c[i]=='5')
s=s+5*pow(10,ind-1-i);
if(c[i]=='6')
s+=6*pow(10,ind-1-i);
if(c[i]=='7')
s=s+7*pow(10,ind-1-i);
if(c[i]=='8')
s=s+8*pow(10,ind-1-i);
if(c[i]=='9')
s=s+9*pow(10,ind-1-i);

}
if(strlen(c)-ind==2||strlen(c)-ind==4)

{

s1=1;

}
else
{
s1=0;

}

for(i=ind+1;i<strlen(c);i++)
{

if(c[i]=='1')
s1=s1+pow(10,strlen(c)-i-1); // bloc du determination des nombres
if(c[i]=='2')
s1=s1+2*pow(10,strlen(c)-i-1);
if(c[i]=='3')
s1=s1+3*pow(10,strlen(c)-i-1);
if(c[i]=='4')
s1=s1+4*pow(10,strlen(c)-i-1);
if(c[i]=='5')
s1=s1+5*pow(10,strlen(c)-i-1);
if(c[i]=='6')
s1+=6*pow(10,strlen(c)-i-1);
if(c[i]=='7')
s1=s1+7*pow(10,strlen(c)-i-1);
if(c[i]=='8')
s1=s1+8*pow(10,strlen(c)-i-1);
if(c[i]=='9')
s1=s1+9*pow(10,strlen(c)-i-1);
}
if(s1>=10 && s>=10)
{
/* bloc des opérations */
printf("%d",s+s1);
if(c[ind]=='/')
printf("%d",s/s1);
if(c[ind]=='-')
printf("%d",s-s1);
if(c[ind]=='*')
printf("%d",s*s1);
}
if(s1<10 && s>=10)
{
s1--;
if(c[ind]=='+')
printf("%d",s+s1);
if(c[ind]=='/')
printf("%d",(s)/(s1));
if(c[ind]=='-')
printf("%d",s-s1);
if(c[ind]=='*')
printf("%d",s*s1);

}
if(s1>=10&&s<10)
{


if(c[ind]=='+')
printf("%d",s+s1);
if(c[ind]=='/')
printf("%d",(s)/(s1));
if(c[ind]=='-')
printf("%d",s-s1);
if(c[ind]=='*')
printf("%d",s*s1);
}
if(s1<10 && s<10)
{

s1--;
if(c[ind]=='+')
printf("%d",s+s1);
if(c[ind]=='/')
printf("%d",s/s1);
if(c[ind]=='-')
printf("%d",s-s1);
if(c[ind]=='*')
printf("%d",s*s1);
}
//printf(" %d\t",s);
//printf(" %d\n",s1);
}
}
Répondre
Ajouter un commentaire
Réponse
+2
moins plus
ben vu que tu ne modifie pas tes variables pas besoin de pointeurs
par exemple pour l'addition tu fais une fonction addition
int addition(int a, int b)
{
      return (a+b);
}
et pour l'appeler dans ton case
case '+' : printf("%d+%d=%d",a,b,addition(a,b)); break;
pyschopathe 1965Messages postés dimanche 2 mars 2008Date d'inscription 22 mars 2010 Dernière intervention - 24 oct. 2008 à 21:25
Je crois que son problème est pour créer une fonction qui puisse gérer a + b - c par exemple...
Répondre
MOKO- 28 avril 2010 à 23:15
salut tout le monde ,on a 1 autre facon a gerer un prg de calculatrice mé c 1 pti peu compliké, on peut demander a l'utilisateur d'ecrire 1 chaine de caractere comme : 2+7*(4/2+2(7*6)-1^2)
ca c 1 chaine de caracteres et va a l'aide de 2 piles , on va parcourir cette chaine comme suit:
boucle(tantque ch[i]) faire { si ch[i] est nbre ou '('->push(&pile1,ch[i]) sinon ->push(&pile2,ch[i])
vous comprenez ce ke j veu dire ? mé c assez compliké
Répondre
Ajouter un commentaire
Réponse
+2
moins plus
le probleme c de realisé une calculatrice ki li une operation comme char et la calculé on utilisant les piles (respectant aussi les priorité des operateur)
Ajouter un commentaire
Réponse
+1
moins plus
Tu en es où du développement ? Quelle genre d'aide tu attends de nous ?
Ajouter un commentaire
Réponse
+1
moins plus
bonsoir,
Aidez moi svp à réaliser une calculatrice arithmétique en C en utilisant les piles ,les files et listes.Tout en veillant sur la priorité des opérandes et des parentèses.IL faut aussi afficher un msg d'erreur en cas d'erreur dans l'expression donnée.
Je n'arrive pas à avoir une approche exacte du programme. Et svp le code ASCII de CTRL-N.
Thomas- 5 mai 2010 à 14:52
salut je dois faire exactement le même programme que toi, je voulais savoir si tu l'avais fini ou pas et si c'était possible de l'avoir, je suis prêt à payer si il le faut. Je n'ai jamais fait de C.
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
j'ai essayé avec switch mais il faut utiliser les pointeurs et les fonctions et c'est difficile
pyschopathe 1965Messages postés dimanche 2 mars 2008Date d'inscription 22 mars 2010 Dernière intervention - 24 oct. 2008 à 00:39
Mais dans les faits, tu en es où du code ? Fais une demande un peu plus précise, on ne va pas te faire ta calculatrice quand même !
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
un programme qui fait laddition,la soustraction, la division et la multiplication des nombres
pyschopathe 1965Messages postés dimanche 2 mars 2008Date d'inscription 22 mars 2010 Dernière intervention - 24 oct. 2008 à 00:51
Je sais ce qu'est une calculatrice, je te demande simplement ce que tu attends de nous ? Tu ne pense pas qu'on va tout te faire ?
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
poste ton programme que tu as deja fait on t'aidera...
Ajouter un commentaire
Réponse
+0
moins plus
oui oila ki fait plusieurs opérations nn pas entre deux variables
Ajouter un commentaire
Réponse
+0
moins plus
ok je vois c'est plus compliqué...
tu pourrais utiliser un tableau je pense pour stocker les variables utilisé dans l'operation
Ajouter un commentaire
Réponse
+0
moins plus
J'ai moi même fais une calculatrice qui réalise bien plus que 4 opérations.
Mon code est en construction, ne m'en voulez pas pour les fautes pouvant être présente, surtout au niveau du mot de passe.
Mot de passe: Pips
#define STERLING 1.3
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "main.h"
#include <string.h>


// Prototype -> main.h




int main()
{


int resultat = 0, nombre1 = 0, nombre2 = 0, argent= 0, choix= 0, compteur=0, o = 0, nombre3 = 0, nombre4= 0,convertir = 0 ; // Variables "normales"
float francs = 0, longueur= 0, largeur = 0, aire = 0, euros = 0 ; // Specifiques
nb1nb2 nombres;

int tableau[4] = {0};// Tableaux et pointeurs
char mdp[100], autrecalcul[100] = "oui"; // Chaine de caract
printf("Veulliez indiquez le mot de passe:\n");
scanf("%s", mdp);



if (mdp == 0)
printf("0 est interdit");

if ( !strcmp(mdp,"Pips"))

{

while (!strcmp(autrecalcul, "oui") || (!strcmp(autrecalcul,"OUI")))

{
printf("Ce programme est une calculatrice\n1. additioner,\n2. soustraire \n3. multiplier \n4. diviser \n5. tripler votre nombre,\n6. convertir les francs en euros\n");
printf("7. Calculer l'aire d'un rectangle\n8. addition plus complexe \n9. Date et Heure");
printf("\nentrer le nombre ici:");
scanf("%d", &choix);

switch (choix)
{
case 1: // Addition
basique1(&nombres);
resultat = nombres.nombre1 + nombres.nombre2;
printf("resultat: %d", resultat);
break;

case 2: // Soustraction
basique1(&nombres);
resultat = nombres.nombre1 - nombres.nombre2;
printf("%d - %d = %d",nombres.nombre1, nombres.nombre2, resultat);
break;
case 3:
// Multiplication
basique1(&nombres);
resultat = nombres.nombre1 * nombres.nombre2;
printf("%d x %d = %d", nombres.nombre1, nombres.nombre2, resultat);
break;
case 4:
nombres.nombre1 = 15;
nombres.nombre2 = 13; // Division
basique1(&nombres);
resultat = nombres.nombre1 / nombres.nombre2;
printf(" %d / %d = %d\n", nombres.nombre1, nombres.nombre2, resultat);
resultat = nombres.nombre1%nombres.nombre2;
printf ("Il reste donc %d", resultat );
break;

case 5: // Triple
printf("Entrer un nombre\n");
scanf("%d", &nombre1);
nombre2= triple(nombre1);
printf("resultat:%d", nombre2);
break;
case 6:
printf("Quel monnaie voulez vous convertir en euros?");
printf("\n\t1.Sterling\n\t2.francs\n\t3.Yens");
scanf("%d", &convertir);
switch(convertir)
{
case 1:
Convertisseur(&euros);

euros = euros / STERLING ;
printf("Vous avez %f", euros);
break;
case 2:
Convertisseur(&euros);
euros = euros / YENS;
printf ("Vous avez %f", euros);


break;
}

break;
case 7:
printf("Longueur:");
scanf("%f", &longueur);
printf("Largeur:");
scanf("%f", &largeur);
airerectangle (longueur,largeur, aire);
break;
case 8:


basique2( &tableau[0],&tableau[1],&tableau[2],&tableau[3]);
resultat= tableau[0]+ tableau[1] + tableau[2] + tableau[3];
printf ("%d", resultat);
case 9:
printf("Nous sommes le %s,\nIl est %s\n",__DATE__, __TIME__);


break;

default:
printf("Ce chiffre n'est pas compris entre 1 et 8");
break;

}
printf( "Autre calcul?");
scanf("%s", autrecalcul);
chaine(autrecalcul);
printf( "%s",autrecalcul);
}

}
else
{
while(mdp != 1234, compteur<3)
{


printf("Ce n'est pas le bon mdp\n");
scanf("%d", &mdp);
compteur++;
}


}

return 0;
}



void basique1(nb1nb2*pointeur1 )

{


printf("Nombre1:");
scanf("%d", &pointeur1->nombre1);
printf ("Nombre2 :");
scanf ("%d", &pointeur1->nombre2);


}


int triple( int param)
{
int result=0;
result=param*3;
return (result);

}

void airerectangle (float param1, float param2, float param3)
{
param3 = param1*param2;
printf("%f x %f = %f ", param1, param2, param3);
}
int sommeTableau(int tableau[], int tailleTableau)

{
int sommeTableau;
sommeTableau = tableau[0]+tableau[1]+tableau[2]+ tableau[3];
return sommeTableau;
}
void basique2(int *pointeur1,int *pointeur2,int *pointeur3, int *pointeur4)
{

printf("Addition a 4 chiffres\n");
printf("Nombre 1:");
scanf("%d", pointeur1);
printf("Nombre 2:");
scanf("%d", pointeur2);
printf("Nombre 3:");
scanf("%d", pointeur3);
printf("Nombre 4:");
scanf("%d", pointeur4);



}
void chaine (char *chaine1)
{
if (chaine1[0] == 'O')
{
chaine1[0] = 'o';
}
if (chaine1[1] == 'U')
{
chaine1[1] = 'u';
}
if (chaine1[2] == 'I')
{
chaine1[2] = 'i';
}
}
void Convertisseur(int *pointeur1)
{
printf("Argent:");
scanf("%f", pointeur1);
}
Ajouter un commentaire
Réponse
+0
moins plus
Et les prototypes:int triple( int param);
float convertisseur ( float param);
void airerectangle (float param1, float param2, float param3);
int sommeTableau(int tableau[], int tailleTableau);
void basique2();
void basique0();

typedef struct nb1nb2 nb1nb2;
struct nb1nb2{
int nombre1;
int nombre2;

};

void basique1(nb1nb2 *);

typedef enum Convertisseur Convt;
enum Cont
{
FRANCS = 1, YENS = 3
}
;
Ajouter un commentaire
Ce document intitulé «  calculatrice(langage C)  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.