Sommer la partie réele est décimale
fati56
Messages postés
24
Statut
Membre
-
fati56 Messages postés 24 Statut Membre -
fati56 Messages postés 24 Statut Membre -
Bonjour,
bein je cherche a écrire un programme en C,dans lequel on demande a l'utilisateur d'entrer par ex(deux réels),et faire la sommation par la suite des partie réelles et décimales séparements par ex si j'entre:
2,5
4,6
le programme doit me donner
2+4=6
5+6=11
mon programme est le suivant en effet y a pas d'erreurs de compilation ou d'execution mais je sais pas pourquoi ca marche pas!!!!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float a,b,c,d;
int i,j,k,l;
char fat[255],lil[255];
unsigned int e,f;
printf("entrer vos deux chiffres:\n");
scanf("%f %f",&a,&b);
i=floor(a);
j=floor(b);
c=a-i;
d=b-j;
sprintf(fat,"%f",c);
sprintf(lil,"%f",d);
e=strlen(fat);
f=strlen(lil);
k=c*(10^e);
l=d*(10^f);
printf("%d\n",i+j);
printf("%d\n",k+l);
return 0;}
alors si quelq'un pourra bien m'aider je lui serai reconnaissante et merci d'avance.
bein je cherche a écrire un programme en C,dans lequel on demande a l'utilisateur d'entrer par ex(deux réels),et faire la sommation par la suite des partie réelles et décimales séparements par ex si j'entre:
2,5
4,6
le programme doit me donner
2+4=6
5+6=11
mon programme est le suivant en effet y a pas d'erreurs de compilation ou d'execution mais je sais pas pourquoi ca marche pas!!!!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float a,b,c,d;
int i,j,k,l;
char fat[255],lil[255];
unsigned int e,f;
printf("entrer vos deux chiffres:\n");
scanf("%f %f",&a,&b);
i=floor(a);
j=floor(b);
c=a-i;
d=b-j;
sprintf(fat,"%f",c);
sprintf(lil,"%f",d);
e=strlen(fat);
f=strlen(lil);
k=c*(10^e);
l=d*(10^f);
printf("%d\n",i+j);
printf("%d\n",k+l);
return 0;}
alors si quelq'un pourra bien m'aider je lui serai reconnaissante et merci d'avance.
A voir également:
- Sommer la partie réele est décimale
- Comment supprimer une partie tomodachi life - Forum DS
- Nouvelle partie pokemon x ✓ - Forum DS
- Batch renommer une partie du nom de plusieurs fichiers ✓ - Forum Programmation
- Excel si cellule contient partie texte ✓ - Forum Excel
- Vous ne pouvez pas modifier une partie de matrice - Forum Excel
4 réponses
Bonjour,
Modifie ton prog et ajoute ces lignes
sprintf(fat,"%f",c);
sprintf(lil,"%f",d);
printf("%s %s",fat,lil);
getch();
et tu verra tout de suite ton erreur.
A+.
Modifie ton prog et ajoute ces lignes
sprintf(fat,"%f",c);
sprintf(lil,"%f",d);
printf("%s %s",fat,lil);
getch();
et tu verra tout de suite ton erreur.
A+.
Re,
Non, l'erreur vient de ton raisonnement.
par exemple, quand j'ai executé ton programme j'ai entré 5.5 et 2.2
Quand j'ai affiché fat et lil ça m'a donné
0.500000 0.2000007
ensuite tu calcule la longueur de fat et lil
e=strlen(fat);----> e=8
f=strlen(lil);-------> f=9
ensuite tu ellève à la puissance
k=c*(10^e); --->0.500000*10^8=50000000
l=d*(10^f);----->0.2000007*10^9=200000700
ça y est, tu vois le problème, ton raisonnement est faux à la base. ça ne donnera jamais un résultat correct.
Salut.
Non, l'erreur vient de ton raisonnement.
par exemple, quand j'ai executé ton programme j'ai entré 5.5 et 2.2
Quand j'ai affiché fat et lil ça m'a donné
0.500000 0.2000007
ensuite tu calcule la longueur de fat et lil
e=strlen(fat);----> e=8
f=strlen(lil);-------> f=9
ensuite tu ellève à la puissance
k=c*(10^e); --->0.500000*10^8=50000000
l=d*(10^f);----->0.2000007*10^9=200000700
ça y est, tu vois le problème, ton raisonnement est faux à la base. ça ne donnera jamais un résultat correct.
Salut.
ok merci mais est ce que tu peux me donner une petite idée d'ou j pourrais bien commencer??
mais avant ca j'aimerai bien te donner une idée sur le raisonnement que j'ai fait
bei d'abort séparer les parties réelles et décimales
pour la partie d'cimale j'ai essayé de la convertir en caractére pour pouvoir y calculer la longuer
par exemple si j'ai 0,123 sa longueur sera 3 en retranchat un un pour le 0 ,don c en la multipliant par 10^3 j'obtient 123 dc ce ce que je désire moi tu vois!!
mais avant ca j'aimerai bien te donner une idée sur le raisonnement que j'ai fait
bei d'abort séparer les parties réelles et décimales
pour la partie d'cimale j'ai essayé de la convertir en caractére pour pouvoir y calculer la longuer
par exemple si j'ai 0,123 sa longueur sera 3 en retranchat un un pour le 0 ,don c en la multipliant par 10^3 j'obtient 123 dc ce ce que je désire moi tu vois!!
OK,
Il ne faut pas mesurer la longueur de fat et lil, mais s'imposer par exemple 1 ,2 ou 3 chiffres après la virgule
Dans ton exemple tu as donné 1 chiffre apres la virgule et ça marche
Maintemant si on se donne deux chiffres:
2,50
4,60
le programme devrait donner
2+4=6
50+60=110
ou encore
2,50
4,65
le programme devrait donner
2+4=6
50+65=115
Est ce bien le but recherché? Sinon tu veux faire quoi exactement.
Il ne faut pas mesurer la longueur de fat et lil, mais s'imposer par exemple 1 ,2 ou 3 chiffres après la virgule
Dans ton exemple tu as donné 1 chiffre apres la virgule et ça marche
Maintemant si on se donne deux chiffres:
2,50
4,60
le programme devrait donner
2+4=6
50+60=110
ou encore
2,50
4,65
le programme devrait donner
2+4=6
50+65=115
Est ce bien le but recherché? Sinon tu veux faire quoi exactement.
merci pour ta réponse.
bon j'ai modifier un peu mon code voila ce que ca a donné
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double a,b;
int k,l;
char fat[255],lil[255];
unsigned int e,f;
printf("entrer vos deux chiffres:\n");
scanf("%f %f",&a,&b);
int i=(int)a;
int j=(int)b;
double c=a-i;
double d=b-j;
sprintf(fat,"%lf",c);
sprintf(lil,"%lf",d);
printf("%s %s",fat,lil);
e=strlen(fat)-2;
f=strlen(lil)-2;
k=c*(10^e);
l=d*(10^f);
printf("%d\n",i+j);
printf("%d\n",k+l);
getch();
return 0;}
mais ca marche tjs pas!!!!j'ai besoin d'aideee