Tilbage til slide -- Tastaturgenvej: 'u'  forrige -- Tastaturgenvej: 'p'  næste -- Tastaturgenvej: 'n'          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;
}