COULIX un pc pour les attirer ... | 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 :
- #include <iostream.h>
- #include <string.h>
- #include <string>
- #include <cstring>
- #include <cstdlib>
- bool palindrome (string a) {
- int len= a.length();
- for(int i=0; i<len;i++){
- if((a[i]*1)!=(a[len-i-1]*1)) { return false; }
- else continue;
- }
- return true;
- }
- string inversestr (string source,string target) {
- for(int i=0; i<(source.length());i++){
- target[i]=source[(source.length())-i-1]; }
- return target;
- }
- int main()
- {
- string a,inverse,resultf;
- char quit;
- int tempa,tempinverse,tempresult;
- do {
- int temp=0;
- cout << "Enter number :\n";
- cin>>a;
- inverse=a;
- string result((a.length()),' ');
- resultf=result;
- inverse=inversestr(a,inverse);
- cout << inverse << "\n";
- for(int i=0; i<(a.length());i++) {
- tempa = (a[i]*1 -48);
- tempinverse = (inverse[i]*1 -48);
- if (tempa+tempinverse+temp >9) {
- tempresult= (tempa+tempinverse+temp)%10;
- temp = 1;
- result[i]=(tempresult+48);
- }
- else {
- tempresult = (tempa+tempinverse+temp);
- result[i]=(tempresult+48);
- }
- }
- if (temp==1){
- result = result + '1';
- resultf = resultf + ' ';
- }
- cout << endl;
- resultf =inversestr(result,resultf);
- cout << "result : " <<resultf << "\n";
- if (palindrome(resultf)==true) { cout << "palindrome \n"; }
- else cout <<"Non palindrome \n";
- cout << "quit ? \n" << "\n";
- cin >> quit;
- }
- while (quit != 'y');
- }
|
|