C/C++の宿題を片付けます 45代目
■ このスレッドは過去ログ倉庫に格納されています
008067
2005/06/09(木) 05:01:53>>67 は間違い。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main () {
const char *roman = "IVXLCDM";
static const int arabic[] = {1, 5, 10, 50, 100, 500, 1000};
const char *r, *b;
char buf[256];
int n;
printf ("ローマ数字: ");
fgets (buf, sizeof buf, stdin);
n = 0;
for (b = buf; *b && *b != '\n'; b++) {
r = strchr (roman, *b);
if (!r) {printf("知らない文字: %c\n", *b); return EXIT_FAILURE;}
if (*r != 'M' && !((r - roman) & 1) && (b[1] == r[1] || b[1] == r[2]))
n -= arabic[r - roman];
else
n += arabic[r - roman];
}
printf ("アラビア数字: %d\n", n);
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています