types/grades-7-13.c - Et program som både bruger enumeration typer 7-trins og 13-skala karakterer - ULOVLIGT. | Lektion 8 - slide 9 : 29 Program 2 |
/* Notice: The errors are not revealed by all compilers. */ #include <stdio.h> #include <stdlib.h> enum grade_simple {not_passed, passed}; enum grade_7 {minus_tre = -3, nul_nul = 0, nul_to = 2, fire = 4, syv = 7, ti = 10, tolv = 12}; enum grade_13 {nul_nul = 0, nul_tre = 3, fem = 5, /* Compile error: */ seks, syv, otte, ni, ti, elleve, /* nul_nul, syv and ti */ tretten = 13}; /* are redeclared. */ enum grade_7 convert_grade_13_to_grade_7 (enum grade_13 g13){ enum grade_7 g7; switch(g13){ case nul_nul: g7 = minus_tre; break; case nul_tre: g7 = nul_nul; break; case fem: g7 = nul_nul; break; case seks: g7 = nul_to; break; case syv: g7 = fire; break; case otte: g7 = syv; break; case ni: g7 = syv; break; case ti: g7 = ti; break; case elleve: g7 = tolv; break; case tretten: g7 = tolv; break; default: printf("Illegal grade in grade_13 encountered. Bye."); exit(EXIT_FAILURE); } return g7; } void prnt_grade_7(enum grade_7 g){ switch (g) { case minus_tre: printf("minus-tre"); break; case nul_nul: printf("nul-nul"); break; case nul_to: printf("nul-to"); break; case fire: printf("fire"); break; case syv: printf("syv"); break; case ti: printf("ti"); break; case tolv: printf("tolv"); break; default: printf("Illegal grade in grade_7 encountered. Bye."); exit(EXIT_FAILURE); } } int main(void){ int grade_number; printf("Enter '13 skala' grade: "); scanf(" %d", &grade_number); printf("7-step grade is: "); prnt_grade_7( convert_grade_13_to_grade_7(grade_number)); printf("\n"); return 0; }