Skip to content
Snippets Groups Projects
Select Git revision
  • 481b5377bfc94e5c42bbe65125c0e0101cf1c171
  • 2025ss default
  • 2024ss
  • 2023ss
  • 2022ss
  • 2021ss
  • 2020ss
  • 2019ss
  • 2018ss
9 results

hash-map-5.c

Blame
  • 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;
    }