Zugriff auf enum-Variablen

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Zugriff auf enum-Variablen

    Ich schreibe ein Programm, welches dezimalzahlen in römische umwandelt.
    Habe aber Probleme mit dem Enum-Datentyp.
    Und zwar möchte ich der reihe nach die Werte der enums von der dezimalzahl abziehen, was kein Problem darstellt.
    Jedoch müssen ja dann auch die zugehörigen Römischen Werte ausgegeben werden (also die "Namen" der enum-Werte).
    Gibt es eine Möglichkeit an die Bezeichnungen der Enums dranzukommen und diese auszugeben?

    Hier der zugehörige code bis jetzt:

    Source Code

    1. #include<stdio.h>
    2. #include<stdlib.h>
    3. enum rzahl {M=1000,CM=900,D=500,CD=400,C=100,XC=900,L=50,XL=40,X=10,IX=9,V=5,IV=4,I=1};
    4. enum rzahl values[] = {M,CM,D,CD,C,XC,L,XL,X,IX,V,IV,I};
    5. int main(int argc, char *argv[]){
    6. enum rzahl z;
    7. int eingabe;
    8. if(argc > 1)
    9. eingabe = atoi(argv[1]);
    10. int i;
    11. for(i = 0 ; i < sizeof(values)/sizeof(enum rzahl) ; i++){
    12. z = values[i];
    13. printf("%d\n",values[i]);
    14. }
    15. return 0;
    16. }
    Display All


    Der code gibt in dieser Form die Zahlenwerte der enums (1000, 900, ...) aus, ich möchte jedoch auch an die Bezeichnung (M, CM, ...) rankommen...
    >: 4 8 15 16 23 42
  • Ja, dachte ich mir.
    Habe es wieder mit mehreren Array gelöst, was den enum eigetlich überflüssig macht.
    In c# ist es wohl möglich, aber in C nicht. Hier der Code:

    Source Code

    1. #include<stdio.h>
    2. #include<stdlib.h>
    3. enum rzahl {M=1000,CM=900,D=500,CD=400,C=100,XC=90,L=50,XL=40,X=10,IX=9,V=5,IV=4,I=1};
    4. enum rzahl values[] = {M,CM,D,CD,C,XC,L,XL,X,IX,V,IV,I};
    5. char* strings[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
    6. int main(int argc, char *argv[]){
    7. int eingabe = 0;
    8. if(argc > 1)
    9. eingabe = atoi(argv[1]);
    10. int i;
    11. for(i = 0 ; i < sizeof(values)/sizeof(enum rzahl) ; i++){
    12. while( eingabe >= values[i] ){
    13. eingabe -= values[i];
    14. printf("%s",strings[i]);
    15. }
    16. }
    17. if(eingabe == 0)
    18. printf("\nZahl umgewandelt!");
    19. return 0;
    20. }
    Display All
    >: 4 8 15 16 23 42