Select Git revision
hash-map-5.c
Peter Gerwinski authored
hash-map-5.c 2.04 KiB
#include <stdio.h>
#include <string.h>
int get_number (const char *name) /* nicht mehr geschummelt, O(1), aber: */
{ /* - Speicher-ineffizient */
static const int n[26] = /* :] vollständig: "sechs" != "sieben", aber unschön */
{ /* :) zuverlässig: "egon" != "eins" */
8, /* a */
-1, /* b */
-1, /* c */
3, /* d */
1, /* e */
5, /* f */
-1, /* g */
-1, /* h */
-1, /* i */
-1, /* j */
-1, /* k */
-1, /* l */
-1, /* m */
0, /* n */
-1, /* o */
-1, /* p */
-1, /* q */
-1, /* r */
6, /* s */
-1, /* t */
-1, /* u */
4, /* v */
-1, /* w */
-1, /* x */
-1, /* y */
2 /* z */
};
static const char *check[26] =
{
"acht",
NULL, /* b */
NULL, /* c */
"drei",
"eins",
"fünf",
NULL, /* g */
NULL, /* h */
NULL, /* i */
NULL, /* j */
NULL, /* k */
NULL, /* l */
NULL, /* m */
"null",
NULL, /* o */
NULL, /* p */
NULL, /* q */
NULL, /* r */
"sechs",
NULL, /* t */
NULL, /* u */
"vier",
NULL, /* w */
NULL, /* x */
NULL, /* y */
"zwei"
};
int value = -1;
if (name && name[0] >= 'a' && name[0] <= 'z')
{
if (name[0] == 's' && !strcmp (name, "sieben"))
value = 7;
else
{
int i = name[0] - 'a';
if (!strcmp (name, check[i]))
value = n[i];
}
}
return value;
}
int main (void)
{
int eins = get_number ("eins");
int zwei = get_number ("zwei");
int drei = get_number ("drei");
int vier = get_number ("vier");
int fuenf = get_number ("fünf");
int sechs = get_number ("sechs");
int sieben = get_number ("sieben");
printf ("%d %d %d %d %d %d %d\n", eins, zwei, drei, vier, fuenf, sechs, sieben);
return 0;
}