Zugriff auf enum-Variablen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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:

    Quellcode

    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. }
    Alles anzeigen


    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:

    Quellcode

    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. }
    Alles anzeigen
    >: 4 8 15 16 23 42