#99 Article 1072 Posted at 1995/12/23 23:32:50 by MEX (MAP5294) [SAHOU.5]
Subject: Re: プログラミング作法・5:回文の判定 /1063
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define ADAM_MIN 2
static int is_adam(const char *s)
{
int fwd = 0, rev = strlen(s);
if(rev-- >= ADAM_MIN)
{
while(fwd <= rev) if(s[fwd++] != s[rev--]) return 0;
return 1;
}
else
{
return 0;
}
}
static char *to_alpha(char *d, const char *s)
{
char c;
int i = 0, j = 0;
while((c = s[i]))
{
if(isalpha(c)) d[j++] = toupper(c);
i++;
}
d[j] = 0;
return d;
}
void main(void)
{
char s[256], d[256];
while(fgets(s, 255, stdin) != NULL)
if(is_adam(to_alpha(d, s))) fputs(s, stdout);
}
USAGE---
program < filename または program だけで stdin から入力
BUGS---
英文字は ADAM_MIN 文字以上に反応
MAP5294 MEX
------------
ちょっと息切れ(+_+)