Thread: largest palindrome number (error in code)

  1. #1
    Registered User
    Join Date
    Feb 2018
    Location
    San Diego, CA
    Posts
    123

    largest palindrome number (error in code)

    Hey all..

    Code:
    /* A palindromic number reads the same both ways.  The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 x 99.
     *
     * Find the largest palindrome made from the product of two 3-digit numbers. */
    
    
    #include <stdio.h>
    
    
    int main (void)
    {
    	
    	int reverse_num = 0, remainder, temp;
    	int a = 100, b = 100; 
    	int sum = 0;
    	int ctr;
    	int large;
    	large = sum;
    
    
    	for (a = 100; a < 999; a++) // create loop for var a from 100 to 999
    	{
    		for(b = 100; b < 999; b++) // create loop for var b from 100 to 999
    		{
    			do
    			{
    				sum = a * b;
    				temp = sum;
    				while (temp != 0) // loop to check digits in temp (separate the digits)
    				{
    					remainder = temp % 10;
    					reverse_num = reverse_num * 10 + remainder;
    					temp /= 10;
    				}
    
    
    				// printf("%d", reverse_num); // with this commented out this isn't printing the correct sum out in reverse order 
    				++ctr;
    				
    				if (sum % sum == 0) // find largest palindrome number and store it in var large
    				{
    					if(sum > large)
    					{
    						large = sum;
    					}
    				}
    			} while (ctr < 'C'); // infinite loop
    		}
    	}
    
    
    	printf("%d is largest palindrome number.\n", large); 	// print largest palindrome number
    
    
    	
    	return 0;
    }
    Program output:

    Code:
    996004 is largest palindrome number.
    With
    Code:
    	// printf("%d", reverse_num);
    code comments removed, the number (sum) is not being calculated and displayed correctly in reverse and the algorithm is being copied correctly (the source code I used) i've found the modulus source code for the reverse number in the while loop on the internet a few places.

    Also, is this nested for loop, correct? To try all calculations for a palindrome number. Thanks.

    a = 100; a < 999; a++ ?
    b = 100; b < 999; b++ ?

    Problem 4 - Project Euler

  2. #2
    null pointer Structure's Avatar
    Join Date
    May 2019
    Posts
    338
    This might help...
    Code:
    int isPalindrome(char *string) {
        int retValue = 1;
        int first = 0, last = (strlen(string)-1);
    
        if (string[first] == string[last]) {
            for (int i=0; i<((last+1)/2); i++) {
                if (string[i] != string[last-i]) return 0;
            }
        } else { return 0; }
    
        return retValue;
    }
    Last edited by Structure; 01-31-2020 at 10:52 AM.
    "without goto we would be wtf'd"

  3. #3
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,661
    Create a utility function to do some work for you, and then make sure it works.
    Code:
    int reverseNum ( int num ) {
      // some calculation goes here
    }
    
    int main ( ) {
      int x = 12345;
      printf("Reverse of %d is %d\n", x, reverseNum(x) );
    }
    When you're happy that little bit of code works, then you can do this.
    Code:
        for (a = 100; a < 999; a++) // create loop for var a from 100 to 999
        {
            for(b = 100; b < 999; b++) // create loop for var b from 100 to 999
            {
                sum = a * b;
                if ( sum == reverseNum(sum) )
                {
                    // do something
                }
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  4. #4
    Registered User
    Join Date
    Feb 2018
    Location
    San Diego, CA
    Posts
    123

    thanks Salem

    Quote Originally Posted by Salem View Post
    Create a utility function to do some work for you, and then make sure it works.
    Code:
    int reverseNum ( int num ) {
      // some calculation goes here
    }
    
    int main ( ) {
      int x = 12345;
      printf("Reverse of %d is %d\n", x, reverseNum(x) );
    }
    When you're happy that little bit of code works, then you can do this.
    Code:
        for (a = 100; a < 999; a++) // create loop for var a from 100 to 999
        {
            for(b = 100; b < 999; b++) // create loop for var b from 100 to 999
            {
                sum = a * b;
                if ( sum == reverseNum(sum) )
                {
                    // do something
                }


    Code:
    #include <stdio.h>
    
    
    int reverseNum (int num)
    {
    	int reverse_num = 0, remainder, temp;
    
    
    	while (num != 0)
    	{
    		remainder = num % 10;
    		reverse_num = reverse_num * 10 + remainder;
    		num /= 10;
    	}
    
    
    	return reverse_num;
    
    
    }
    
    
    int main (void)
    {
    	int a = 100;
    	int b = 100;
    	int sum = 0;
    	int large;
    
    
    	for(a = 100; a < 999; a++)
    	{
    		for(b = 100; b < 999; b++)
    		{
    			sum = a * b;
    			if ( sum == reverseNum(sum) )
    			{
    				if (sum > large)
    				{
    					large = sum;
    				}
    			}
    		}
    	}
    
    
    	printf("%d\tLargest palindrome match\n", large);	// do something
    
    
    	return 0;
    }
    This code works and finds the correct answer

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 3
    Last Post: 01-30-2013, 09:30 AM
  2. Replies: 2
    Last Post: 10-31-2009, 06:49 PM
  3. Error in Recursive String Palindrome Code
    By clegs in forum C Programming
    Replies: 13
    Last Post: 12-21-2008, 12:36 PM
  4. largest number prime number that can be produced...
    By ElemenT.usha in forum C Programming
    Replies: 8
    Last Post: 02-17-2008, 01:44 AM
  5. Find largest and second largest number (help)
    By Arkon in forum C++ Programming
    Replies: 6
    Last Post: 01-20-2006, 11:21 PM

Tags for this Thread