Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1829 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  fonction change un integer 123 en 321... help

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction change un integer 123 en 321... help

n°288743
COULIX
un pc pour les attirer ...
Posté le 18-01-2003 à 01:12:22  profilanswer
 

ou sino comment iverser nombre sans utilser string ??
ex : 2365  --> 5632
c pour un prog qui calcul les nombres palindrome, et leur coef.
 
un autre problem, je ne voie pas trop comment garder tou les chiffres d un tres tes gros entier lors de calculs ..  :cry:  
help please.
 

Code :
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. void inverse(string b) {
  5. string save = b;
  6. long inverse;
  7. for(int i=0;i<(b.length());i++) {
  8. save[(b.length())-i-1] = b[i]; }
  9. cout << save <<"\n";  }
  10. int main() {
  11. string quit;
  12. long a;
  13. string b;
  14. do {
  15. cout << "enter an integer number\n";
  16. cin >>b;
  17. inverse(b);
  18. cout << "do u want to quit ?\n";
  19. cin >>quit;}
  20. while(quit!="y" );
  21. }


Message édité par COULIX le 20-01-2003 à 02:53:50
mood
Publicité
Posté le 18-01-2003 à 01:12:22  profilanswer
 

n°288799
nraynaud
lol
Posté le 18-01-2003 à 06:07:55  profilanswer
 

COULIX a écrit :

ou sino comment iverser nombre sans utilser string ??
ex : 2365  --> 5632
c pour un prog qui calcul les nombres palindrome, et leur coef.
 
un autre problem, je ne voie pas trop comment garder tou les chiffres d un tres tes gros entier lors de calculs ..  :cry:  
help please.
 


atoi() et itoa() ça devrait t'aider.
Pour les grand nombres, trouve un package de classes toutes faites, c'est une oeuvre titanesque (un de mes profs a fait sa thèse, 3 ans de sa vie, sur la division).

n°289353
Taz
bisounours-codeur
Posté le 19-01-2003 à 10:54:59  profilanswer
 

je préferais une solution à base de stringstream
 
surtout que itoa est loin d'etre standard, et que atoi c'est du C


Message édité par Taz le 19-01-2003 à 10:56:06
n°289684
COULIX
un pc pour les attirer ...
Posté le 20-01-2003 à 02:21:28  profilanswer
 

nraynaud a écrit :


atoi() et itoa() ça devrait t'aider.
Pour les grand nombres, trouve un package de classes toutes faites, c'est une oeuvre titanesque (un de mes profs a fait sa thèse, 3 ans de sa vie, sur la division).


  :p  
je trouve ca un peu stupide notre dernier assignement (premier semestre de c++)
 
faire un programme qui calcul le palindrome de tout entier et donn ele coef.
exemple.
tu rentre 17 ---> il fait 17+71 = 88 hop palindrome degre 1.  
le problem c qu apres une recheche sur le sujet, des nombres sont carrement trop grand, genre 196 a 14 millions de chiffrre toujours pas de plaindroe.
donc ou est l interet de nous faire un programme qui est limiter, vu nos conaissance.
 
bon je vais quand meme essaer de fair quelqeu chose d ebien avec le palindrome + coef en fsteam dans un fichier en output.
et peut rtete que j eparviendrai a trouver le fameux palindrone de 196  :D  :D .
 

n°289685
COULIX
un pc pour les attirer ...
Posté le 20-01-2003 à 02:22:25  profilanswer
 

++Taz a écrit :

je préferais une solution à base de stringstream
 
surtout que itoa est loin d'etre standard, et que atoi c'est du C


je vais voir sa, apres une recherche de "stringtream " sur google  :whistle:

n°289686
COULIX
un pc pour les attirer ...
Posté le 20-01-2003 à 02:35:58  profilanswer
 

sa marche pas
 

Code :
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. void inverse(string b) {
  5. string save = b;
  6. long inverse;
  7. for(int i=0;i<(b.length());i++) {
  8. save[(b.length())-i-1] = b[i]; }
  9. cout << save <<"\n";
  10. save=atoi(inverse);  // pourquoi ? sa marches pas
  11. }
  12. int main() {
  13. string quit;
  14. long a;
  15. string b;
  16. do {
  17. cout << "enter an integer number\n";
  18. cin >>b;
  19. inverse(b);
  20. cout << "do u want to quit ?\n";
  21. cin >>quit;}
  22. while(quit!="y" );
  23. }

n°289688
nraynaud
lol
Posté le 20-01-2003 à 04:46:14  profilanswer
 

COULIX a écrit :

sa marche pas
 

Code :
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. void inverse(string b) {
  5. string save = b;
  6. long inverse;
  7. for(int i=0;i<(b.length());i++) {
  8. save[(b.length())-i-1] = b[i]; }
  9. cout << save <<"\n";
  10. save=atoi(inverse);  // pourquoi ? sa marches pas
  11. }
  12. int main() {
  13. string quit;
  14. long a;
  15. string b;
  16. do {
  17. cout << "enter an integer number\n";
  18. cin >>b;
  19. inverse(b);
  20. cout << "do u want to quit ?\n";
  21. cin >>quit;}
  22. while(quit!="y" );
  23. }




 
heu je suis pas sur, mais déjà ta variable "inverse" a le même nom que ta fonction.  
atoi() veut dire ascii to integer donc au minimum c'est itoa qu'il faut que tu utilises ici, mais comme ça renvoie une chaine C (un char *) et pas une string, il doit y avoir une connerie genre conversion implicite mais utilise au minimum une conversion explicite genre string(itoa(nombre)).
Mais il t'a été proposé un truc un peu plus C++ que itoa et atoi plus haut.  
 
Et puis donne les messages d'erreur quand ça marche pas !

n°289689
COULIX
un pc pour les attirer ...
Posté le 20-01-2003 à 06:14:36  profilanswer
 

bon jai converti mes string en char [100], sa marche avec

Code :
  1. u = atoi(save);


le probleme des que mon entier depasse 12 chiffre le resultat est merdeux..... :cry:

n°289696
Taz
bisounours-codeur
Posté le 20-01-2003 à 08:05:41  profilanswer
 

puisque vous voulez pas utilisez les stringstream, gardez au moins les std::sting
 
 
pour atoi:
 
int i= atoi(str.c_str());
 
le prototype  
const char * std::string::c_str() const;

n°290432
nraynaud
lol
Posté le 21-01-2003 à 06:22:02  profilanswer
 

COULIX a écrit :

bon jai converti mes string en char [100], sa marche avec

Code :
  1. u = atoi(save);


le probleme des que mon entier depasse 12 chiffre le resultat est merdeux..... :cry:  


 
Heu d'après ma calculette c'est à 10 chiffres que ça coupe.
 
Il te faut un package bigInteger, tu pourras pas manipulet des nombres aussi grands sinon, ou alors garde des chaines de caractères (et de type string, pas char *) de bout en bout. Je ne sais pas ce que c'est que ce coefficient qu tu calcules mais s'il ne nécessite pas de faire d'opération arithmétique impliquant tout le nombre, garde des caractères de bout en bout.
 

mood
Publicité
Posté le 21-01-2003 à 06:22:02  profilanswer
 

n°290593
COULIX
un pc pour les attirer ...
Posté le 21-01-2003 à 10:46:47  profilanswer
 

nraynaud a écrit :


 
Heu d'après ma calculette c'est à 10 chiffres que ça coupe.
 
Il te faut un package bigInteger, tu pourras pas manipulet des nombres aussi grands sinon, ou alors garde des chaines de caractères (et de type string, pas char *) de bout en bout. Je ne sais pas ce que c'est que ce coefficient qu tu calcules mais s'il ne nécessite pas de faire d'opération arithmétique impliquant tout le nombre, garde des caractères de bout en bout.
 
 


 
ca marche avec des strings =)
j ai p.\lus qu a y mettre une boucle et roulaize...

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. #include <string>
  4. #include <cstring>
  5. #include <cstdlib>
  6. bool palindrome (string a) {
  7. int len= a.length();
  8. for(int i=0; i<len;i++){
  9. if((a[i]*1)!=(a[len-i-1]*1)) { return false; }
  10. else continue;
  11. }
  12. return true;
  13. }
  14. string inversestr (string source,string target) {
  15.        for(int i=0; i<(source.length());i++){
  16.        target[i]=source[(source.length())-i-1]; }
  17.        return target;
  18. }
  19. int main()
  20. {
  21. string a,inverse,resultf;
  22. char quit;
  23. int tempa,tempinverse,tempresult;
  24. do {
  25. int temp=0;
  26. cout << "Enter number  :\n";
  27. cin>>a;
  28. inverse=a;
  29. string result((a.length()),' ');
  30. resultf=result;
  31. inverse=inversestr(a,inverse);
  32. cout << inverse << "\n";
  33. for(int i=0; i<(a.length());i++)   {
  34. tempa = (a[i]*1 -48);
  35. tempinverse = (inverse[i]*1 -48);
  36. if (tempa+tempinverse+temp >9) {
  37.      tempresult= (tempa+tempinverse+temp)%10;
  38.      temp = 1;
  39.      result[i]=(tempresult+48);
  40. }
  41. else {
  42.      tempresult = (tempa+tempinverse+temp);
  43.      result[i]=(tempresult+48);
  44. }
  45. }
  46. if (temp==1){
  47. result = result + '1';
  48. resultf = resultf + ' ';
  49. }
  50. cout << endl;
  51. resultf =inversestr(result,resultf);
  52. cout << "result          : " <<resultf << "\n";
  53. if (palindrome(resultf)==true) { cout << "palindrome \n"; }
  54. else cout <<"Non palindrome \n";
  55. cout << "quit ? \n" << "\n";
  56. cin >> quit;
  57. }
  58. while (quit != 'y');
  59. }



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  fonction change un integer 123 en 321... help

 

Sujets relatifs
Requete sur plusieurs serveurs ?!!! HELP !HELP Durée de tri en C ?????????? HELP please !!
[JAVASCRIPT] FONCTION & RETURNTemplate / Pointeur de fonction
[JAVASCRIPT] HELP very urgent....Ajouter une fonction [code] [/code] à mon script...
.htaccess redirection en fonction du login?Récupérer un <select> dans une fonction javascript ?!
[C]Un ptit coup de main sur pointeurs et fonction svpfonction imap -> saturation du proc & de la RAM
Plus de sujets relatifs à : fonction change un integer 123 en 321... help


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR