Hello mates,
Does anyone know how to write a function that tests if an integer is a
palindrome in C language? 20 13312
Wabz wrote:
Does anyone know how to write a function that tests if an integer is a
palindrome in C language?
Yes. I'm quite sure that someone does.
== Posted via Newsfeeds.Com  UnlimitedUnrestrictedSecure Usenet News== http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
= East and WestCoast Server Farms  Total Privacy via Encryption =
On Aug 14, 1:19 pm, Kevin Handy <k...@srv.netwrote:
Wabz wrote:
Does anyone know how to write a function that tests if an integer is a
palindromein C language?
Yes. I'm quite sure that someone does.
== Posted via Newsfeeds.Com  UnlimitedUnrestrictedSecure Usenet News==http://www.newsfeeds.comThe #1 Newsgroup Service in the World! 120,000+ Newsgroups
= East and WestCoast Server Farms  Total Privacy via Encryption =
Could this someone possibly help me write the said program?
"Wabz" writes:
On Aug 14, 1:19 pm, Kevin Handy <k...@srv.netwrote:
>Wabz wrote:
Does anyone know how to write a function that tests if an integer is a palindromein C language?
Yes. I'm quite sure that someone does.
Could this someone possibly help me write the said program?
Start by extracting the individual digits of the integer. You may find the
modulo operator, %, helpful. There is another way, involving sprintf() in
<stdio.h>, but if this is a school assignment, the instructor probably
expects the modulo way.
On Tue, 14 Aug 2007 17:10:51 +0000, Wabz wrote:
Hello mates,
Does anyone know how to write a function that tests if an integer is a
palindrome in C language?
I assume you mean palindrome in base 10.
sprintf() it to a string, and then check whether the string is
palindrome:
len = strlen(str);
for (i = 0; i < len/2; i++) {
if (str[i] != str[len  i  1])
break; /*it is not palindome*/
}

Army1987 (Replace "NOSPAM" with "email")
Noone ever won a game by resigning.  S. Tartakower
"Wabz" <Wa*****@gmail.comwrote in message
news:11**********************@b79g2000hse.googlegr oups.com...
Hello mates,
Does anyone know how to write a function that tests if an integer is a
palindrome in C language?
What base? Eleven is a palindrome when written in base 10,
but not when written in base 8.
Create a buffer large enough to hold the characters to display the
largest integer. Use sprintf to fill it. Check whether palindrome.

Fred L. Kleinschmidt
Boeing Associate Technical Fellow
Aero Stability and Controls Computing
Wabz wrote, On 14/08/07 18:42:
On Aug 14, 1:19 pm, Kevin Handy <k...@srv.netwrote:
>Wabz wrote:
>>Does anyone know how to write a function that tests if an integer is a palindromein C language?
Yes. I'm quite sure that someone does.
== Posted via Newsfeeds.Com  UnlimitedUnrestrictedSecure Usenet News==http://www.newsfeeds.comThe #1 Newsgroup Service in the World! 120,000+ Newsgroups = East and WestCoast Server Farms  Total Privacy via Encryption =
Please don't quote things you are not commenting on, such as the
annoying text appended to Kevin's post.
Could this someone possibly help me write the said program?
Yes, I'm sure one of the people meeting those requirements could help if
they were so desired. However, knowledgeable people are unlikely to do
your homework for you when you have not even made an attempt. So if you
want help you should attempt it and then post your attempt here with any
questions you have. The more effort you put in the more people will be
prepared to help you.

Flash Gordon
On Aug 14, 11:20 am, Army1987 <army1...@NOSPAM.itwrote:
On Tue, 14 Aug 2007 17:10:51 +0000, Wabz wrote:
Hello mates,
Does anyone know how to write a function that tests if an integer is a
palindrome in C language?
I assume you mean palindrome in base 10.
Otherwise (for instance) FFFF is a palindrome, but 65535 will say
'nope'
sprintf() it to a string, and then check whether the string is
palindrome:
len = strlen(str);
for (i = 0; i < len/2; i++) {
if (str[i] != str[len  i  1])
break; /*it is not palindome*/
}
It might be interesting to try every base from 2 to 36.
Given that condition, what percentage of integers are palindromes?
On Aug 14, 2:15 pm, user923005 <dcor...@connx.comwrote:
On Aug 14, 11:20 am, Army1987 <army1...@NOSPAM.itwrote:
On Tue, 14 Aug 2007 17:10:51 +0000, Wabz wrote:
Hello mates,
Does anyone know how to write a function that tests if an integer is a
palindrome in C language?
I assume you mean palindrome in base 10.
Otherwise (for instance) FFFF is a palindrome, but 65535 will say
'nope'
sprintf() it to a string, and then check whether the string is
palindrome:
len = strlen(str);
for (i = 0; i < len/2; i++) {
if (str[i] != str[len  i  1])
break; /*it is not palindome*/
}
It might be interesting to try every base from 2 to 36.
Given that condition, what percentage of integers are palindromes?
It seems that what numbers are not palindromes in some base might be a
more interesting question. Of course if we include bases up to that
number, then the answer is obviously 'none'.
#include <stdlib.h>
#include <string.h>
/* ltostr is from snippets (I fixed the broken bit). */
char *ltostr(long long num, char *string, size_t max_chars, unsigned
base)
{
char remainder;
int sign = 0;
if (base < 2  base 36)
return ((void *) 0);
if (num < 0) {
sign = 1;
num = num;
}
if (num == 0) /* bugbug:drc formerly wrong result here... */
return "0";
string[max_chars] = '\0';
for (max_chars; max_chars sign && num != 0; max_chars) {
remainder = (char) (num % base);
if (remainder < 9)
string[max_chars] = remainder + '0';
else
string[max_chars] = remainder  10 + 'A';
num /= base;
}
if (sign)
string[max_chars] = '';
if (max_chars 0)
memset(string, ' ', max_chars + 1);
return string + max_chars;
}
int ispal(const char *start)
{
const char *end = start + strlen(start)  1;
while (end start) {
if (*start != *end) {
return 0;
}
start++;
end;
}
return 1;
}
#include <stdio.h>
static char string[50] = {0};
int main(void)
{
long long index;
unsigned base;
for (index = 0; index < 4000000000; index++) {
for (base = 2; base < 37; base++) {
long long val = index;
char *p = ltostr(val, string, sizeof string,
base);
if (isspace(*p))
p++;
if (ispal(p)) {
printf("%llu = %s is a palindrome in base %u\n", val,
p, base);
}
}
}
return 0;
}
/* Original ltostr() was hosed. Fixed version: */
static const char B36TAB[] =
{
'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
};
#include <stdlib.h>
#include <string.h>
/* ltostr is from snippets (I fixed the broken bit). */
char *ltostr(long long num, char *string, size_t max_chars, unsigned
base)
{
char remainder;
int sign = 0;
if (base < 2  base 36)
return ((void *) 0);
if (num < 0) {
sign = 1;
num = num;
}
if (num == 0) /* bugbug:drc formerly wrong result
here... */
return "0";
string[max_chars] = '\0';
for (max_chars; max_chars sign && num != 0; max_chars) {
remainder = (char) (num % base);
string[max_chars] = B36TAB[remainder];
num /= base;
}
if (sign)
string[max_chars] = '';
if (max_chars 0)
memset(string, ' ', max_chars + 1);
return string + max_chars;
}
int ispal(const char *start)
{
const char *end = start + strlen(start)  1;
while (end start) {
if (*start != *end) {
return 0;
}
start++;
end;
}
return 1;
}
#include <stdio.h>
static char string[50] =
{0};
int main(void)
{
long long index;
unsigned base;
for (index = 0; index < 4000000000; index++) {
for (base = 2; base < 37; base++) {
long long val = index;
char *p = ltostr(val, string, sizeof string,
base);
if (isspace(*p))
p++;
if (ispal(p)) {
printf("%llu = %s is a palindrome in base %u\n", val,
p, base);
}
}
}
return 0;
}
/*
Sample output:
....
2290134 = E656E is a palindrome in base 20
2290141 = 84548 is a palindrome in base 23
2290156 = 1IEI1 is a palindrome in base 35
2290187 = 9H1H9 is a palindrome in base 22
2290220 = 36Q63 is a palindrome in base 29
2290252 = 11022100122011 is a palindrome in base 3
2290293 = 50805 is a palindrome in base 26
2290322 = 2OOO2 is a palindrome in base 30
2290353 = 925529 is a palindrome in base 12
2290378 = 4270724 is a palindrome in base 9
2290391 = HAHAH is a palindrome in base 19
2290460 = BG6GB is a palindrome in base 21
2290499 = 2ERE2 is a palindrome in base 31
2290501 = 1D3D1 is a palindrome in base 36
2290530 = 5LEL5 is a palindrome in base 25
2290534 = E666E is a palindrome in base 20
2290627 = 3K9K3 is a palindrome in base 28
2290641 = 1000101111001111010001 is a palindrome in base 2
2290658 = 20233033202 is a palindrome in base 4
2290670 = 84648 is a palindrome in base 23
2290671 = 9H2H9 is a palindrome in base 22
2290686 = 6LGL6 is a palindrome in base 24
2290735 = 13EE31 is a palindrome in base 18
2290738 = 48A84 is a palindrome in base 27
2290752 = HAIAH is a palindrome in base 19
2290850 = 25T52 is a palindrome in base 32
2290853 = 1O9O1 is a palindrome in base 34
2290901 = BG7GB is a palindrome in base 21
2290922 = 2290922 is a palindrome in base 10
....
*/
user923005 <dc*****@connx.comwrites:
/* Original ltostr() was hosed. Fixed version: */
<stringbased palindrome tester snipped>
I like this way:
int pal_aux(int n, int r, int b)
{
return n == 0 ? r : pal_aux(n / b, r * b + n % b, b);
}
int is_pal_in_base(int n, int b)
{
return pal(n, 0, b) == n;
}
(not well tested, but it *looks* sound!)

Ben.
On Aug 14, 3:33 pm, Ben Bacarisse <ben.use...@bsb.me.ukwrote:
user923005 <dcor...@connx.comwrites:
/* Original ltostr() was hosed. Fixed version: */
<stringbased palindrome tester snipped>
I like this way:
int pal_aux(int n, int r, int b)
{
return n == 0 ? r : pal_aux(n / b, r * b + n % b, b);
}
int is_pal_in_base(int n, int b)
{
return pal(n, 0, b) == n;
/*Did you mean:*/
return pal_aux(n, 0, b) == n;
}
(not well tested, but it *looks* sound!)
Certainly much brighter than converting to character.
But it makes it harder to see the answers.
user923005 <dc*****@connx.comwrites:
On Aug 14, 3:33 pm, Ben Bacarisse <ben.use...@bsb.me.ukwrote:
>user923005 <dcor...@connx.comwrites:
/* Original ltostr() was hosed. Fixed version: */
<stringbased palindrome tester snipped>
I like this way:
int pal_aux(int n, int r, int b) { return n == 0 ? r : pal_aux(n / b, r * b + n % b, b); }
int is_pal_in_base(int n, int b) { return pal(n, 0, b) == n;
/*Did you mean:*/
return pal_aux(n, 0, b) == n;
Yes. Thanks for spotting it that.
One day I'll remember just to paste the code, and to "tidy it up" for
posting. (I added the _aux because I thought "pal" rather too sort a
name, even for a small helper function.)

Ben.
Wabz wrote:
Kevin Handy <k...@srv.netwrote:
>Wabz wrote:
>>Does anyone know how to write a function that tests if an integer is a palindromein C language?
Yes. I'm quite sure that someone does.
Could this someone possibly help me write the said program?
I suggest you first find him and then ask him (or her). An
alternative would be to do your own homework.

Chuck F (cbfalconer at maineline dot net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net>

Posted via a free Usenet account from http://www.teranews.com
Wabz wrote:
>
Hello mates,
Does anyone know how to write a function that tests if an integer is a
palindrome in C language?
/* BEGIN new.c */
#include <stdio.h>
#include <string.h>
#include <limits.h>
int integer_is_palindrome(long unsigned integer);
char *str_rev(char *s);
int main(void)
{
int integer;
for (integer = 0; 1000 integer; ++integer) {
if (integer_is_palindrome(integer)) {
printf("%d\n", integer);
}
}
return 0;
}
int integer_is_palindrome(long unsigned integer)
{
char lutoa_buff[(sizeof(long) * CHAR_BIT) / 3 + 1];
char copy[sizeof lutoa_buff];
sprintf(lutoa_buff, "%lu", integer);
strcpy(copy, lutoa_buff);
str_rev(copy);
return strcmp(copy, lutoa_buff) == 0;
}
char *str_rev(char *s)
{
char *const p = s;
char *t = p;
char swap;
if (*t != '\0' && *++t != '\0') {
t += strlen(t + 1);
do {
swap = *t;
*t = *s;
*s++ = swap;
} while (t s);
}
return p;
}
/* END new.c */

pete
pete <pf*****@mindspring.comwrites:
Wabz wrote:
>> Hello mates,
Does anyone know how to write a function that tests if an integer is a palindrome in C language?
/* BEGIN new.c */
#include <stdio.h>
#include <string.h>
#include <limits.h>
int integer_is_palindrome(long unsigned integer);
char *str_rev(char *s);
int main(void)
{
int integer;
for (integer = 0; 1000 integer; ++integer) {
if (integer_is_palindrome(integer)) {
printf("%d\n", integer);
}
}
return 0;
}
int integer_is_palindrome(long unsigned integer)
{
char lutoa_buff[(sizeof(long) * CHAR_BIT) / 3 + 1];
char copy[sizeof lutoa_buff];
sprintf(lutoa_buff, "%lu", integer);
strcpy(copy, lutoa_buff);
str_rev(copy);
return strcmp(copy, lutoa_buff) == 0;
}
char *str_rev(char *s)
{
char *const p = s;
char *t = p;
char swap;
if (*t != '\0' && *++t != '\0') {
t += strlen(t + 1);
do {
swap = *t;
*t = *s;
*s++ = swap;
} while (t s);
}
return p;
}
/* END new.c */
slow?
something like this for the palindrome check on the string. Untested and
pretty much pseudo code.
len=strlen(p);
endp=p+len1;
while(endp>p)
if ((*endp)!=(*p++))
return 0;
return 1;

user923005 <dc*****@connx.comwrites:
It might be interesting to try every base from 2 to 36.
Given that condition, what percentage of integers are palindromes?
I don't have an answer, but a few moments of arithmetic led me to
discover that in base B there are pow(B, N/2) palindromic numbers
of length N, for even N. Somehow this is pleasing, even though
it's almost trivial.

Ben Pfaff http://benpfaff.org
Ben Pfaff wrote:
user923005 <dc*****@connx.comwrites:
>It might be interesting to try every base from 2 to 36. Given that condition, what percentage of integers are palindromes?
I don't have an answer, but a few moments of arithmetic led me to
discover that in base B there are pow(B, N/2) palindromic numbers
of length N, for even N. Somehow this is pleasing, even though
it's almost trivial.
What you calculated is the ratio of palindromic numbers in all numbers of
length N, not the amount of palindromic numbers of length N. In base 10,
there are not 0.1 but 9 palindromic numbers of length 2. I'm not sure
whether you meant to post an expression that would return 9, or whether you
meant to describe your expression as returning the ratio.
Harald van DÄ³k <tr*****@gmail.comwrites:
Ben Pfaff wrote:
>user923005 <dc*****@connx.comwrites:
>>It might be interesting to try every base from 2 to 36. Given that condition, what percentage of integers are palindromes?
I don't have an answer, but a few moments of arithmetic led me to discover that in base B there are pow(B, N/2) palindromic numbers of length N, for even N. Somehow this is pleasing, even though it's almost trivial.
What you calculated is the ratio of palindromic numbers in all numbers of
length N, not the amount of palindromic numbers of length N. In base 10,
there are not 0.1 but 9 palindromic numbers of length 2. I'm not sure
whether you meant to post an expression that would return 9, or whether you
meant to describe your expression as returning the ratio.
I meant the ratio. Oops.

"I hope, some day, to learn to read.
It seems to be even harder than writing."
Richard Heathfield
In article <11*********************@w3g2000hsg.googlegroups.c omuser923005 <dc*****@connx.comwrites:
....
It might be interesting to try every base from 2 to 36.
Given that condition, what percentage of integers are palindromes?
It decreases fast when the numbers increase. A random number with
k baseb digits is a palindrome with probability:
1/(b ** (k/2))
and as k is floor(b_log(n) + 1), we see that it decreases fast for
all b. (To get the probablility that a number is *not* a palindrome
we multiply all factors (1  1/(b ** (k/2))).)
Much more interesting is that 41 is the smallest number that is not
a palindrome for any of those bases.

dik t. winter, cwi, kruislaan 413, 1098 sj amsterdam, nederland, +31205924131
home: bovenover 215, 1025 jn amsterdam, nederland; http://www.cwi.nl/~dik/
"Dik T. Winter" <Di********@cwi.nlwrites:
In article <11*********************@w3g2000hsg.googlegroups.c omuser923005 <dc*****@connx.comwrites:
...
It might be interesting to try every base from 2 to 36.
Given that condition, what percentage of integers are palindromes?
It decreases fast when the numbers increase. A random number with
k baseb digits is a palindrome with probability:
1/(b ** (k/2))
and as k is floor(b_log(n) + 1), we see that it decreases fast for
all b. (To get the probablility that a number is *not* a palindrome
we multiply all factors (1  1/(b ** (k/2))).)
Much more interesting is that 41 is the smallest number that is not
a palindrome for any of those bases.
This got me interested... By observing that
(1) all numbers, n, are palindromic in base n  1 (n is written "11")
(2) none are palindromic in base n (n is written "10")
(3) all are palindromic in bases b n (n is the single digit "n")
we can arrive at the idea of a number being "nonpalindromic"[1] in a
more general way: a number n is nonpalindromic if it is a palindrome
only when written in the "trivial" bases b >= n1.
The first few are 3, 4, 6, 11, 19, 47 and 53.[2] They seem to be common
(though not as common as primes).
There are also numbers that are multipalindromic (being palindromic
in more that their fair share of bases). For example, 21 (in bases 2,
4, and 6), 36, (in 5, 8, 11 and 17) and 60 (9, 11, 14, 19 and 29).
You might also be interested to know (I did not until yesterday) that
some bases provoke palindromism much more than others. In a quick
count for the numbers between 3 100000, it turns out that 47 makes
more of these numbers palindromic than any other base. There is a
little cluster around 47:
B Number of numbers in 3..99999 that are palindromic in base B
47 2125
46 2116
48 2081
49 2038
This "most palindromic base" creeps upwards (very slowly) as more
numbers are considered, but the presence of a cluster made me think it
might be worth plotting. Think it was. The curve is curious and
unexpected (at least to me).[3]
Crossposted (with followups set) to compprogramming. I hope that is
the right thing to do. We are certainly off topic now!
[1] An invented term, as far as I know.
[2] One must decide about 0, 1 and 2 simply by definition, I think.
[3] http://www.bsb.me.uk/palindrome/

Ben. This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: NotGiven 
last post by:
I need to check the $_GET to make certain it is a positive integer.
is_integer($_GET) is not working. I think it thinks it's a sting.
So I tried casting it to an int using,...

by: Runic911 
last post by:
Does anyone know how i can fix my Palindrome program?
s = raw_input('Enter a String: ')
punctuation = '%$!*.,:? ;()\'\"\\'
i = 0
h = 0
t = 0
p = ''
z = 0
while s!= ' ':

by: Ken Fine 
last post by:
I periodically receive a 5+ MB XML document that I handload into SQL Server
using SQLXML running under a DTS process.
Unfortunately, the document is humancreated, and (very unfortunately) often...

by: Lorin Leone 
last post by:
Can anyone help me modify the program so that it recognizes strings
like "Anna" as palindromes. To make the program "caseinsensitive."
using the builtin C++ function "toupper". and so that it...

by: SAN CAZIANO 
last post by:
is there a function that get the name of the first input field of the
current form ?
in my example below I want create an array of form field name and in the
onsubmit assign all element's name to...

by: Stanley Sinclair 
last post by:
Has the promise of stored procedures written in VB6 been fulfilled in 8.2?
If there special syntax, and where do I find it, and where are samples?
Would it be as efficient as, say, SQL?

by: trentdk 
last post by:
I want to test which language (testing C and FORTRAN) would be faster
with math calculations; one test with intergers, and another test with
floats. What math formulas/functions would you guys use...

by: Nigel Findlater 
last post by:
I have been using Visual Studio 2003 to generate aspx and
aspx.vb file. On my development platform they all work
fine, but when I load them on the server I get the
message:
Parser Error...

by: deanhiller 
last post by:
In C++ or Java, or whatever OO, I am used to using the Dependency
Injection Pattern(or I believe formerly called Inversion of Control
Pattern) to accomplish test first in a large system. ie. I...

by: isladogs 
last post by:
The next Access Europe meeting will be on Wednesday 4 Oct 2023 starting at 18:00 UK time (6PM UTC+1) and finishing at about 19:15 (7.15PM)
The start time is equivalent to 19:00 (7PM) in Central...

by: Aliciasmith 
last post by:
In an age dominated by smartphones, having a mobile app for your business is no longer an option; it's a necessity. Whether you're a startup or an established enterprise, finding the right mobile app...

by: giovanniandrean 
last post by:
The energy model is structured as follows and uses excel sheets to give input data:
1Utility.py contains all the functions needed to calculate the variables and other minor things (mentions...

by: Teri B 
last post by:
Hi, I have created a subform Roles. In my course form the user selects the roles assigned to the course.
0netomany. One course many roles.
Then I created a report based on the Course form and...

by: isladogs 
last post by:
The next Access Europe meeting will be on Wednesday 1 Nov 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM)
Please note that the UK and Europe revert to winter time on...

by: nia12 
last post by:
Hi there,
I am very new to Access so apologies if any of this is obvious/not clear.
I am creating a data collection tool for health care employees to complete. It consists of a number of...

by: NeoPa 
last post by:
Introduction
For this article I'll be focusing on the Report (clsReport) class. This simply handles making the calling Form invisible until all of the Reports opened by it have been closed, when it...

by: isladogs 
last post by:
The next online meeting of the Access Europe User Group will be on Wednesday 6 Dec 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM).
In this month's session, Mike...

by: GKJR 
last post by:
Does anyone have a recommendation to build a standalone application to replace an Access database? I have my bookkeeping software I developed in Access that I would like to make available to other...
 