首页 > 解决方案 > How can I avoid overflow in my IsNumberPolyndrom function

问题描述

I'm practicing some c questions, and I wanted to make a function that checks if a giving value is a palindrome or not without using mod . But- I am worried about overflow in my function IsNumPalindrome.

Would love to get some input on how to make this code better.

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

 /*function returns mod, divider must be different than zero */

int GetMod(int number, int divider)
{

    return(number- (divider*(number/divider)));
}

/* function return 1 if palindrome 0 if not*/
int IsNumberPalindrome(int number)
{
    int saveOriginal = 0;
    int reminder = 0;
    int reversedNum = 0;

    saveOriginal = number ;
    while (0 < number)
    {
        reminder = GetMod(number, 10);
        number /= 10;
        reversedNum = reversedNum * 10 + reminder;
    }

    return(saveOriginal == reversedNum);
}

int main()
{
    int i = 0;

    i= IsNumberPalindrome(154);
    printf("Is pal for 154 %d\n", i);
    i = IsNumberPalindrome(3003);
    printf("Is pal for 3003 %d\n", i);

    return 0;
}

标签: coverflow

解决方案


推荐阅读