Blad obliczania sumy, nie wczytuje wartości ENUM

0

Witam,

Wczytuję dane ze standardowego wejścia do tablicy, potem podkładam element tablicy do zmiennej suma.
i tutaj błąd.
Dlaczego w zmiennej suma jest wartość ASCII a nie ENUM ??

 
#include <stdio.h>
#include <string.h>

enum { a = 1, b, c, d, e, f, g, h, i, k, l = 20, m = 30, n = 40, o = 50, p = 60, q = 70, r = 80, s = 90, t = 100, v = 200, x = 300, y = 400, z = 500 };

int main()
{
char *tab;
int iloscElem;
int suma = 0;
char znak;

          tab = (char*) malloc ( 27 * sizeof(char));
          scanf("%s", tab);
          iloscElem = strlen(tab);
          //while(iloscElem --) suma += tab[iloscElem];
          //suma = n;
          suma = tab[1];
          printf("suma = %d\n", suma);

return 0;
}

Pozdrawiam
T

0

Wydaje mi się, czy zdefiniowałeś enuma bez nazwy z którego nie korzystasz? Swoją drogą po co ci tablica? nie lepiej dodawać od razu przy wczytywaniu?

0

Jest tylko anonimowy :

suma = n;
//suma = tab[1];
to suma wynosi 40

0
char *tab;
//...
scanf("%s", tab);

Bo to tablica char.

W fazie wykonywania programu nazwa wartości enum nie istnieje. Zostają same wartości liczbowe i nie możesz nic konwertować w ten sposób. Musisz zrobić tak:

int GetValue(char Code)
{
   switch(Code)
   {
   case 'a': return 1;
   case 'b': return 2;
   //...
   case 'z': return 500;
   }
}

//...

suma = GetValue( tab[1] );
0

wiem, że można zrobić takiego wielkiego switcha, albo bardziej elegancko to mapę. Tylko zależało mi na użyciu enum-a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1