2016-03-20 12 views
0

Ich habe einen Code geschrieben, um das größte Palindrom zu finden, das durch Multiplikation von zwei 3-stelligen Zahlen gebildet wird. Anstatt jedoch nur die gewünschte Antwort, d. H. Das größte Palindrom, zu erhalten, erhalte ich die Liste aller möglichen Palindrome. Wie programmiere ich es, um den größten zu finden? Code:Das Maximum in gegebenen Ausgaben finden

#include <iostream> 

using namespace std; 

int revfunc(int x) { 
    int rev = 0, num, d; 
    num = x; 
    while(num != 0) { 
     d = num % 10; 
     rev = (rev * 10) + d; 
     num = num/10; 
    } 
    long int maxi = 0; 
    if(x == rev && maxi < x) { 
     maxi=x; 
     cout<<maxi<<endl; 
    } 
} 

int main() { 
    long int ans; 
    for(int i = 100; i <= 999; i++) { 
     for(int j = 100; j <= 999; j++) { 
      ans = i * j; 
      revfunc(ans); 
     } 
    } 

    cin.get(); 
    return 0; 
} 
+2

Warum ist dies markiert "C"? Das ist 'C++'. Beachten Sie auch, dass es einen großen Unterschied zwischen 'C' und' C++ 'gibt. Sie brauchen diese 'C++', 'C++ 11',' C++ 14' nicht zu markieren. Wähle einfach einen von ihnen aus. –

+0

Okay. Vielen Dank. Behält das im Hinterkopf. –

+0

Auch danke martijnn2008. Ich habe heute gelernt, was gute Präsentation von dir ist! –

Antwort

1

In Ihrem Programm, das Sie eigentlich nicht die maximale Palindrom wählen, Sie werfen sie einfach alle. Hier ist eine minimale Korrektur für den Code zu arbeiten:

bool revfunc(int x){ 
    int rev = 0, num, d; 
    num = x; 
    while (num != 0){ 
     d = num % 10; 
     rev = (rev * 10) + d; 
     num = num/10; 
    } 
    long int maxi = 0; 
    return x == rev&&maxi < x; 
} 

int main() 
{ 
    int max_palindrome = 0; 
    long int ans; 
    for (int i = 100; i <= 999; i++){ 
     for (int j = 100; j <= 999; j++){ 
      ans = i*j; 
      if (ans > max_palindrome && revfunc(ans)) 
      { 
       max_palindrome = ans; 
      } 
     } 
    } 

    cout << max_palindrome; 

    cin.get(); 
    return 0; 
} 
+0

Vielen Dank @CodeFuller. Wenn möglich, könntest du mich einfach durchgehen? Welche Bedeutung hat die Umstellung auf Bool? –

+0

revfunc() bestimmt nun, ob es sich bei der Zahl um Palindrom handelt, deshalb gibt es bool zurück. Der Hauptzyklus prüft dann, ob der aktuelle i * j ein Palindrom ist, und aktualisiert das Endergebnis, wenn er größer ist als der vorher bekannte Palindrome-Wert. – CodeFuller

Verwandte Themen