bonjour a tous,
voila je debute en c++ et je dois realiser une fonction qui fait le produit de 2 tres grand nombres en utilisant des string ,la fonction prend en paramtre 2 string et retourne 1 string a la fin qui est le resultat du produit .
exple: string s1:40000000000000000000000000000000000000000000000000000000000 (plus encore comme c'est un ex je m'arrete la)
string s2:50000000000000000000000000000000000000000000000000000000000000000
string res=2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
j'ai fais un code qui prend 2 grands string qui les convertis en long double puis fait la multiplication mais le resultat m'est donner sous forme 1.37E+353 par exemple ,ce qui ne correspond pas a mes attentes si quelqu'un pouvais m'aider ,me donner des directives sur comment faut que je procede (vu que ma methode n'est pas bonne apprement) depuis l'entree de mes variable jusqu'au resultat afficher sous forme entiere et non en exposant .
MERCI de votre comprehension
nb:pardonner moi pour les accents j'ai un PC anglais.
MON CODE:
===========================================================
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 #include <iostream> #include <sstream> #include <string> #include <stdlib.h> using namespace std; string mult(string s1,string s2) { istringstream istr(s1); istringstream iss(s2); long double i,j,nb1,nb2; long double res; if((istr >> i) and (iss>> j)) { cout<<"entier 1 entree:"<<i<<endl; cout<<"entier 2 entree:"<<j<<endl; nb1=i; nb2=j; res=i*j; } else cout<<"erreur"<<endl; cout<<"nb1:"<<nb1<<endl; cout<<"nb2:"<<nb2<<endl; ostringstream oss; if(oss<<res) string s= oss.str(); cout<<"Resultat:"<<s<<endl; return s; } /* string mult(string s1,string s2) { int mul,i,j; string res; for (i=0; i<s1.size();i--) { for (j=0; j<s2.size();j--) { mul = (s1[i] - '0') * (s2[j] - '0'); res[i + j] += ((res[i + j + 1] + mul - '0') / 10); res[i + j + 1] = ((res[i + j + 1] + mul - '0') % 10) + '0'; } } cout<<"resultat:"<<res<<endl; } */ int main () { string s1, s2; cout << "Tapez une chaine 1 : "; cin >> s1; /*convert(s1);*/ cout << "Tapez une chaine 2: "; cin >> s2; /*convert(s2);*/ mult(s1,s2); return 0; }
Partager