/*
 *  上から読んでも下から読んでも同じ言葉作成支援プログラム
 *
 *  1994-2-3 by Rassyai
 */

#include <conio.h>
#include <ctype.h>
#include <stdio.h>

main()
{
	int i,j,k,key;
	char s[256],d[256];

	i = 0;
	s[0] = '\0';
	printf("\x0C\x1B[10;H          →回文作成お助けプログラム(ESCで終了,BS[後退]でクリア)←\x1B[12;H");
	while (1) {
		key = getch();
			if (key == 0x1B) {
				printf("\n");
				break;
			}
			if (key == 0x08) {
				i = 0;
				s[0] = '\0';
				d[0] = '\0';
				printf("\x0C\x1B[10;H          →回文作成お助けプログラム(ESCで終了,BS[後退]でクリア)←\x1B[12;H");
				continue;
			}
		s[i] = key;
		i++;
		s[i] = '\0';
		for(k=0,j=i-1;j>=0;j--,k++){
			if( (j>0) && (s[j] == '\xDE' || s[j] == '\xDF')){
				d[k+1] = s[j];
				d[k] = s[j-1];
				j--;
				k++;
			} else {
				d[k] = s[j];  /* ﾞﾟ以外 */
			}
		}
		d[k] = '\0';

		printf("\x0D%s\x1B[s",s);
		printf("%s\x1B[u",d);
	}
}
