Bonjour,
je rentre un int par exemple 24, et je voudrais récuperer deux int : '2' et '4'.
je vois pas comment faire ma fonction ...
une idée ?
merci
Version imprimable
Bonjour,
je rentre un int par exemple 24, et je voudrais récuperer deux int : '2' et '4'.
je vois pas comment faire ma fonction ...
une idée ?
merci
Tu récupère ton int.
Tu le met dans une std::string via std::ostringstream
Tu récupère tes valeurs via []
je essayé en écrivant :
je lance avec n = 24, j'ai comme affichageCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 void split(int n, int* n1, int* n2) { char num[100]; cout<<"ca passe 2 !!"<<endl; sprintf(num, "%d", n);//put the int n to the sting num cout<<"ca passe 3 !!"<<endl; cout<<num[0]<<" "<<num[1]<<endl; //put the char num[0] into the pointer n1 *n1=num[0]-48; //because 0 code 48 in the ASCII table *n2=num[1]-48; cout<<"ca passe 4 !!"<<endl; }
je comprend pas vraiment pourquoiCode:
1
2
3
4
5
6
7 ubuntu@ubuntu:~/exercice1$ ./AdditionCycles enter your number 24 ca passe 2 !! ca passe 3 !! 2 4 Segmentation fault (core dumped)
Sinon il doit y avoir plus simplement :
Code:
1
2
3
4 istringstream iss( str ); char c; while ( iss >> c ) ;
Je comprend pas ta solution NiamorH
qu'est ce c'est : istringstream iss( str );
et ça donne quoi : while ( iss >> c ) ??
je met où mon int de dépard et les 2 int d'arrivé ?
merci
Essaie ce code chez toi :
Et regarde ce que ta console affiche. Magique ? Non il aurait suffit d'aller voir la faq, tous les éléments y sont.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <sstream> #include <iostream> using namespace std; int main() { istringstream iss( "24" ); char c; while ( iss >> c ) { cout << c << endl; } }
Maintenant, la seule difficulté pour toi, c'est de mettre la bonne chaîne dans l'iss.
NiamorH >> seul inconvénient de ta méthode,tu rentre le chiffre en dur :D
Pourquoi se compliquer la vie si un petit peu de maths peut resoudre ce probleme.
Tu recupere ton int ensuite tu utilises le modulo pour recuperer les chiffres.
Ex: n=1235
On aura :Code:
1
2
3
4
5
6
7
8 int i=0; while (n) { //les chiffres seront 5 3 2 1 chiffre[i++]=n % 10; n=n/10 }
Code:
1
2
3
4
5
6
7
8
9 n=1235 chiffre[0]=5 n=123 chiffre[1]=3 n=12 chiffre[2]=2 n=1 chiffre[3]=1 n=0
Oui je sais c'est pour taquiner.
Ce que je sous entendais, c'est que sont int, ya de forte chance pourqu'il le recoive via cin (ou un autre flux)
D'où ma remarque
Merci darrylsite;
C'est beaucoup plus simple comme ça en effet !!
merci aux autre aussi pour leur réponses