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