2016-03-20 12 views
0

İki 3 basamaklı sayının çarpılmasıyla oluşan en büyük palindromu bulmak için bir kod yazdım. Bununla birlikte, sadece en büyük palindrom olan istenen cevabı almak yerine, tüm olası palindromların listesini alıyorum. En büyüğünü bulmak için nasıl programlayabilirim. Kod: aslında maksimum palindrom seçmeyin ProgramınızdaVerilen çıkışlarda maksimum bulma

#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

Neden bu 'C' olarak etiketlendi? Bu "C++". Ayrıca, C' ve C++ arasında büyük bir fark olduğunu unutmayın. Bu "C++", "C++ 11", "C++ 14" etiketlerini kullanmanız gerekmez. Sadece birini seç. –

+0

Tamam. Teşekkürler. Bunu akılda tutacak. –

+0

Ayrıca teşekkürler martijnn2008. Bugün sizlerden iyi bir sunumun ne olduğunu öğrendim! –

cevap

1

, sadece hepsini dökümü. İşte çalışmak için en az düzeltme:

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

Çok teşekkürler @CodeFuller. Eğer mümkünse, bana doğru yürüdün mü? Bool'ün int'yi değiştirmesi ne gibi bir öneme sahiptir? –

+0

revfunc() şimdi sayının palindrom olup olmadığını belirler, bu yüzden boole döndürür. Ana döngü daha sonra mevcut i * j'nin bir palindrom olup olmadığını kontrol eder ve önceki bilinen palindrom değerinden daha büyükse nihai sonucu günceller. – CodeFuller

İlgili konular