All pastes #367752 Raw Edit

Mine

public c v1 · immutable
#367752 ·published 2007-02-22 16:01 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#define UNBETAETIGT 0#define BETAETIGT 1#define SCHALTERANZAHL 8#define NICHT_VORHANDEN -1#define SCHALTER 1#define OEFFNER 2// Funktionsprototypen.void zeigePlan();void zeigeZustand();int pruefeLogik();int toggle();main () {  int i, run, settings[SCHALTERANZAHL];  int input;  int typen[SCHALTERANZAHL] = {SCHALTER,                               OEFFNER,                               OEFFNER,                               SCHALTER,                               NICHT_VORHANDEN,                               SCHALTER,                               OEFFNER,                               SCHALTER};  int default_setting[SCHALTERANZAHL] = {UNBETAETIGT,                                         UNBETAETIGT,                                         UNBETAETIGT,                                         UNBETAETIGT,                                         NICHT_VORHANDEN,                                         UNBETAETIGT,                                         UNBETAETIGT,                                         UNBETAETIGT};    for (i = 0; i < SCHALTERANZAHL; i++) {    settings[i] = default_setting[i];  }    do {    run = 1;    printf("ABSCHLUSSAUFGABE 1.8 - SCHALTUNGSLOGIK\n");    printf("======================================");    printf("\n\nAktuelle Schalterbelegung und Schaltplan:\n\n");    zeigeZustand(settings, typen);    printf("\n\nBitte waehlen Sie mit den Tasten 1 - 8 einen\n");    printf("Schalter, den Sie betaetigen moechten.\n");    printf("'0' zum Beenden.\n\n\tAUSWAHL: ");    scanf("%c", &input);    if (input >= 1 && input <= 8 && settings[input-1] != NICHT_VORHANDEN) {      settings[input-1] = toggle(settings[input-1]);      system("cls");    } else {      switch (input) {        case 0:          printf("\n\nArrividerci und Goodbye, bis zum naechsten Mal...!\n\n");          run = 0;          break;        default:           system("cls");          printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");          printf("!!! BITTE KORREKTE AUSWAHL TREFFEN !!!\n");          printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n");      }    }  } while(run == 1);  printf("\n\n");  system("PAUSE");}int toggle(int setting) {  if (setting == NICHT_VORHANDEN) {    return setting;  }  if (setting == BETAETIGT) {    setting = UNBETAETIGT;  } else {    setting = BETAETIGT;  }  return setting;} void zeigeZustand(int settings[], int typen[]) {  int i, l;  for (i = 0; i < SCHALTERANZAHL; i++) {    // Pruefen, ob manche Schalternummern nicht verwendet werden.    if (settings[i] == NICHT_VORHANDEN) {      continue;    }    // Zustand des Schalters angeben.    printf("Schalter %d ist ", i+1);    (settings[i] == BETAETIGT)? printf("betaetigt.\n"):printf("nicht betaetigt.\n");  }  // Zustand der Lampe ausgeben  l = pruefeLogik(settings);  zeigePlan(settings, typen, l);}int pruefeLogik(int settings[]) {  // Korrekturwert zur Vereinfachung der Eingabe.  int i = 1;  if (((settings[1-i] == BETAETIGT) ||       (settings[2-i] == UNBETAETIGT && settings[3-i] == UNBETAETIGT) ||       (settings[4-i] == BETAETIGT) ) &&      ((settings[6-i] == BETAETIGT) ||       (settings[8-i] == BETAETIGT) ||       (settings[7-i] == UNBETAETIGT))) {         printf("Lampe 1 leuchtet.\n\n");         return 1;  } else {         printf("Lampe 1 leuchtet nicht.\n\n");         return 0;  }}void zeigePlan(int settings[], int typen[], int l) {  int i, j, k = 1;  char lampe[4]={'#','#','#'};  if (l == 0) {    for (i = 0; i < 3; i++) {      lampe[i] = '.';    }  }  char s_geschaltet[3] = {'_','_'};  char s_offen[3] = {'/',' '};  char o_geschaltet[3] = {'-','|'};  char o_offen[3] = {'\\','|'};  char s[SCHALTERANZAHL][3];  for (i = 0; i < SCHALTERANZAHL; i++) {    // SCHALTER    if (settings[i] == BETAETIGT && typen[i] == SCHALTER) {      for (j = 0; j < 3; j++) {        s[i][j] = s_geschaltet[j];      }    }    if (settings[i] == UNBETAETIGT && typen[i] == SCHALTER) {      for (j = 0; j < 3; j++) {        s[i][j] = s_offen[j];      }    }    //OEFFNER    if (settings[i] == BETAETIGT && typen[i] == OEFFNER) {      for (j = 0; j < 3; j++) {        s[i][j] = o_geschaltet[j];      }    }    if (settings[i] == UNBETAETIGT && typen[i] == OEFFNER) {      for (j = 0; j < 3; j++) {        s[i][j] = o_offen[j];      }    }    }  printf("______%s______      _______%s_______\n", s[4-k], s[6-k]);  printf("|     S4     |      |      S6      |\n");  printf("|            |      |              |\n");  printf("|__  ___  ___|______|______  ______|\n");  printf("|  %s   %s   |      |      %s      |\n", s[2-k], s[3-k], s[7-k]);  printf("|  S2   S3   |      |      S7      |\n");  printf("|            |      |              |\n");  printf("|_____%s_____|      |______%s______|\n", s[1-k], s[8-k]);  printf("|     S1                   S8      |\n");  printf("|                                 %s\n", lampe);  printf("|                              L1 %s\n", lampe);  printf("|                                 %s\n", lampe);  printf("|----+ |---------------------------|\n");}