Programmation calculatrice

Fermé
doudalopez Messages postés 19 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 24 mai 2008 - 22 mai 2008 à 10:00
nitsuj Messages postés 2 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 23 mai 2008 - 23 mai 2008 à 21:31
j'ai un programme a faire sur calculatrice et les etapes sont :
-implémenter les operations arithmetiques courantes
-implémenter une interface graphique facile a utiliser
-lire une expression mathématique simple et la calculer
voila ce que j'ai fait pour le premier point et suis bloqué pour le reste pouvez vous m'aider a le faire
merci


#include<stdio.h>

main ()
{
int a,b,op;
float res;
printf("tape un nombre\n");
scanf("%d",&a);
printf("tape un nombre\n");
scanf("%d",&b);
printf("tape 1\t pour + \n tape 2 \t pour - \n tape 3 \t pour * \n tape 4 pour /\n");
scanf("%d",&op);
if(op==1)
{
res=a+b;
}
else
{ if(op==2)
{
res=a-b;
}

else
{if(op==3)
{
res=a*b;
}

else
{
res=(float)a/(float)b;
}
}
return (0);}




}
A voir également:

9 réponses

bwaze Messages postés 46 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 26 mai 2009 7
22 mai 2008 à 12:00
bonjour
alors d'abord tes if else imbriqués tu peux les remplacer par un switch si tu veux
switch(op)
case ..
..
etc
ou encore declarer op comme un caractere et faire
if(op=='+') instruction
if(op=='-') instruction
etc


et maintenant je vois pas sur quoi tu veux qu'on t'aide
0
doudalopez Messages postés 19 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 24 mai 2008
22 mai 2008 à 15:44
j'ai fait comme vous m'avez dit et ca marche parcontre je suis bloqué pour faire le reste une interface graphique facile a utiliser et lire une expression mathemetique simple et la calculer
0
bwaze Messages postés 46 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 26 mai 2009 7
22 mai 2008 à 16:40
qu'es que tu entent par interface graphique
0
bwaze Messages postés 46 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 26 mai 2009 7
22 mai 2008 à 16:47
pour l'expression arithmetiquetu peux la declarer comme une chaine de caractere et tu essaye de recuperer les valeurs une à une
0
doudalopez Messages postés 19 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 24 mai 2008
22 mai 2008 à 16:49
c'est ca justement que je ne comprend pas comment on le fait
0
bwaze Messages postés 46 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 26 mai 2009 7
22 mai 2008 à 17:08
tu commences par declarer un tableau de caracteres dans lequel tu mettra l'expression arithmetique et aprés deux boucles suffiront pour recuperer les valeurs pour ensuite effectuer l'operartion souhaité
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bwaze Messages postés 46 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 26 mai 2009 7
22 mai 2008 à 17:14
si tu veux convertir un caractere en entier tu peux essayer
char c;
int x;
if(c>='0' && c<='9'){
x=c-'0';
}

je ne suis pas sure que ça marche mais essaye quand meme
0
doudalopez Messages postés 19 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 24 mai 2008
22 mai 2008 à 17:36
ca n'a pas marché
0
bwaze Messages postés 46 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 26 mai 2009 7
22 mai 2008 à 17:39
je peux voir le code stp
0
doudalopez Messages postés 19 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 24 mai 2008
22 mai 2008 à 18:20
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
int wait4key(void);

void demo_ASCII_extended();

void demo_couleurs(void);
HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
WORD wOldColorAttrs;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
int main(int argc, char* argv[])
{



float a, b, res;
char c;
int x;
if(c>='0' && c<='9'){
x=c-'0';
}



printf("tape un nombre\n");
scanf(" %f",&a);
printf("tape un nombre\n");
scanf(" %f",&b);
printf("tape 1\t pour + \n tape 2 \t pour - \n tape 3 \t pour * \n tape 4 pour /\n");
scanf(" %d",&op);
if(op==+)
{
res=a+b;
}
else
if(op==-)
{
res=a-b;
}

else
if(op==*)
{
res=a*b;
}

else
{
res=(float)a/(float)b;
}
printf("le resultat est %f\n",res);







system("pause");



return 0;


}
0
bwaze Messages postés 46 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 26 mai 2009 7
23 mai 2008 à 03:41
je te propose de regarder vite fait ce tuto
https://www.squalenet.net/fr/ti/tutorial_c/13-chaines-de-caracteres.php5

si ta pas compri on en reparlera
0
doudalopez Messages postés 19 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 24 mai 2008
23 mai 2008 à 21:27
est ce que vous pouvez m'aider a corrigé mes erreurs
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>



float calcul(float operateur1, float operateur2, float operande);


void demo_couleurs(void)
{

HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
WORD wOldColorAttrs;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
GetConsoleScreenBufferInfo(h, &csbiInfo);
wOldColorAttrs = csbiInfo.wAttributes;
SetConsoleTextAttribute ( h, FOREGROUND_BLUE ); // on ecrit en bleu

}

//int main(int argc, char* argv[])




int main(int argc, char* argv[])
{


float resultat,resultat_temp,resultat_temp1,resultat_temp2,resultat_temp3;
float a,b,c,d,e;

char op1,op2,op3,op4;







demo_couleurs();




if(argc > 9){
printf("Nombre d'arguments doit etre inferieur à 9\n");

}
if(argc == 3) //deux operandes
{
scanf("%f%c%f",&a, &op1, &b);
printf("%f %c %f\n", a, op1, b);
// resultat = calcul(a, b, op1);
}
if(argc == 5) //trois operandes
{
if(op1 == '*' || op1 == '/'){
scanf("%f%c%f%c%f",&a, &op1, &b);
printf("%f %c %f %c %f\n", a, op1, b,op2,c);
resultat_temp= calcul(a, b, op1);
resultat = calcul(resultat_temp, c, op2);

}else{
if(op2 == '*' || op2 == '/'){
resultat_temp = calcul(b, c, op2);
resultat = calcul(a, resultat_temp, op2);
}else {
resultat_temp = calcul(a, b, op1);
resultat = calcul(resultat_temp, c, op2);

}

}

}

if(argc == 7) //quatre operandes
{
if(op1 == '*' || op1 == '/')
{
scanf("%f%c%f%c%f%c%f",&a, &op1, &b,op2,c,op3,d);
printf("%f %c %f %c %f %c %f\n", a, op1,b,op2,c,op3,d);
resultat_temp1 = calcul(a, b, op1);
resultat_temp2 = calcul(resultat_temp1, c, op2);
resultat_temp = calcul(resultat_temp2, d, op3);



}else{
if(op2 == '*' || op2 == '/')
{
resultat_temp1 = calcul(b, c, op2);
resultat_temp2 = calcul(a,resultat_temp1,op2);
resultat_temp = calcul(resultat_temp2,d, op3);
}else

{
resultat_temp1 = calcul(c,d, op3);
resultat_temp2 = calcul(b,resultat_temp1,op2);
resultat_temp = calcul(a,resultat_temp2,op3);

}
}

}

if(argc == 9) //cinq operandes
{

if(op1 == '*' || op1 == '/')
{
scanf("%f%c%f%c%f%c%f%c%f",&a, &op1, &b,op2,c,op3,d,op4,e);
printf("%f %c %f %c %f %c %f %c %f\n", a, op1,b,op2,c,op3,d,op4,e);
resultat_temp1 = calcul(a, b, op1);
resultat_temp2 = calcul(resultat_temp1, c, op2);
resultat_temp3 = calcul(resultat_temp2, d, op3);
resultat_temp = calcul(resultat_temp3, e, op4);

}else
{
if(op2 == '*' || op2 == '/')
{
resultat_temp1 = calcul(b, c, op2);
resultat_temp2 = calcul(a,resultat_temp1, op1);
resultat_temp3 = calcul(resultat_temp2,d, op3);
resultat_temp = calcul(resultat_temp3,e, op4);

}
else

{
resultat_temp1 = calcul(c,d, op3);
resultat_temp2 = calcul(b,resultat_temp1,op2);
resultat_temp3 = calcul(a,resultat_temp2,op3);
resultat_temp = calcul(resultat_temp3,e,op4);
}
}else

{
resultat_temp1 = calcul(d,e,op4);
resultat_temp2 = calcul(c,resultat_temp1,op3);
resultat_temp3 = calcul(b,resultat_temp2,op2);
resultat_temp = calcul(a,resultat_temp3,op1);

}else // nombre d'operandes invalides

{

printf("Nombre d'operandes invalides");
}

}
}


float calcul(float operateur1, float operateur2, float operande)
{

//void calcul(operateur1, operateur2, operande){
if(op == '+'){
retour = operateur1 + operateur2
}
if(op == '-'){
retour = operateur1 - operateur2
}
if(op== '/'){
retour = operateur1 / operateur2
}
if(op == '*'){
retour = operateur1 * operateur2
}

return retour;
}
0
nitsuj Messages postés 2 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 23 mai 2008
23 mai 2008 à 21:31
J'ai recemment fait un programme qui fait le meme chose et je crois que cela pourra t'interesse, et en passant je suis Nitsuj de Haiti.
Amuses toi.



/+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/

#include<stdio.h>
#include<conio.h>
#include<math.h>
main(){
char x;
float a,b,somme,difference,quotient,reste;
clrscr();
printf("Quel type de calcul aimeriez-vous faire?");
scanf("%c",&x);
printf("Entrez le premier element");
scanf("%f",&a);
printf("Entrez le second element");
scanf("%f",&b);
switch(x){
case'+': printf("Vous avez choisi l'addition");
somme=a+b;
printf(" et la somme est:%f",somme);
break;
case '-': printf("Vous avez choisi la soustraction");
difference=a-b;
printf(" et la difference est:%f",difference);
break;
case '*': printf("Vous avez choisi la multiplication");
quotient=a*b;
printf(" et le quotient est:%f",quotient);
break;
case '/': printf("Vous avez choisi la division");
reste=a/b;
printf(" et le reste est:%f",reste);

break;
}
getch();
}
0