Проблемы с палиндромами в С - PullRequest
3 голосов
/ 05 марта 2012

Я написал некоторый код на C, чтобы попытаться найти, является ли число палиндромом.Правило состоит в том, что два 3-значных числа должны быть умножены вместе, и вы должны найти самый высокий палиндром.ответ должен быть 906609, но мой код получает только 580085.

код:

#include <stdio.h>
#include <stdlib.h>

/* Intialise */
void CalcPalin();
int CheckPalin(int number);

/* Functions */
void CalcPalin()
{
    int result = 0;
    int palin = 0;
    int FNumber = 0;
    int FNumber2 = 0;

    int number = 99;
    int number2 = 100;

    while(number2 < 1000)
    {
        number += 1;

        /*times together - calc result*/
        result = number * number2;

        if(CheckPalin(result) == 1)
        {
            palin = result;
            FNumber = number;
            FNumber2 = number2;
        }

        if(number == 999)
        {
            number = 99;
            number2 += 1;
        }
    }
    printf(" Result = %d, by Multiplying [%d] and [%d]", palin, FNumber, FNumber2 );
}

int CheckPalin(int number)
{
    int checknum, checknum2 = 0;

    checknum = number;
    while(checknum)
    {
        checknum2 = checknum2 * 10 + checknum % 10;
        checknum /= 10;
    }

    if( number == checknum2)
        return 1;
    else
        return 0;
}

int main( void)
{
    CalcPalin();
    return EXIT_SUCCESS;
}

Я уверен, что это глупый ответ, и я смотрю на что-то простое, но я не могу найтиЭто.Любая помощь будет великолепна

Ответы [ 2 ]

4 голосов
/ 05 марта 2012

Вы не проверяли, превышает ли текущий результат один старый результат.Добавьте этот чек.

// test new result is higher than old palin before setting this as palin
if(CheckPalin(result) == 1 && palin < result) 
0 голосов
/ 05 марта 2012

Ваш алгоритм печати:

 Result = 580085, by Multiplying [583] and [995]

Похоже, вы должны найти способ увеличить еще 1-е число.Есть много возможностей между 583 и 999, чтобы добраться до 906609.

РЕДАКТИРОВАТЬ : На самом деле, вы ищете 993 * 913 = 906609.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...