/* Programm zum Ausdrucken einer Wahrheitstabelle für das "Tardy-Bus-Problem" */ #include #define wa1 (!a||!d||c) #define wa2 (!c||!f||!e) #define wa3 (b||(f&&!e)) #define a1 (!a||!d||b) #define a2 (!c||!e||b) #define a3 (!d||b||!a||!c) #define a4 (!d||b||!a) #define a5 (c||(!e&&!b)) #define a6 ((!d&&!c)||f) #define a7 (!b||!f||!e) #define a8 (!e||!a||!d||!f) int main(void){ char a,b,c,d,e,f, as[9]; short int i; a=b=c=d=e=f=0; as[1]=as[2]=as[3]=as[4]=as[5]=as[6]=as[7]=as[8]=1; printf("Das Tardy-Bus-Problem\n"); printf("=====================\n\n"); printf( "Boolesche Operanden: (a) Bill nimmt den Bus;\n" " (b) Bill erhält den Job;\n" " (c) Bill verpasst seine Verabredung;\n" " (d) Der Bus verspätet sich;\n" " (e) Bill sollte nach Hause gehen;\n" " (f) Bill fühlt sich nieder geschlagen.\n\n"); printf( "Wahre Annahmen: (wa1) a->d->c;\n" " (wa2) c&&f->!e;\n" " (wa3) !b->f&&!e.\n\n"); printf( "Zu pruefen: (a1) a->d->b;\n" " (a2) (c&&e)->b;\n" " (a3) d->!b->(!a||!c);\n" " (a4) (d&&!b)->!a;\n" " (a5) !c->(!e&&!b);\n" " (a6) (d||c)->f;\n" " (a7) b->(!f||!e);\n" " (a8) (e&&a)->d->!f.\n\n\n"); printf( "Tabelle gibt nur die Zeilen aus, fuer die wa1=wa2=wa3 = true\n" "============================================================\n\n"); printf("a b c d e f | wa1 wa2 wa3 | a1 a2 a3 a4 a5 a6 a7 a8\n"); printf("---------------------------------------------------\n"); for(a=0; a<=1; a++) for(b=0; b<=1; b++) for(c=0; c<=1; c++) for(d=0; d<=1; d++) for(e=0; e<=1; e++) for(f=0; f<=1; f++){ if(wa1 && wa2 && wa3){ printf("%i %i %i %i %i %i | ", a, b, c, d, e, f); printf(" %i ", wa1); printf(" %i ", wa2); printf(" %i | ", wa3); if(as[1]) as[1]=a1; printf("%i ", a1); if(as[2]) as[2]=a2; printf("%i ", a2); if(as[3]) as[3]=a3; printf("%i ", a3); if(as[4]) as[4]=a4; printf("%i ", a4); if(as[5]) as[5]=a5; printf("%i ", a5); if(as[6]) as[6]=a6; printf("%i ", a6); if(as[7]) as[7]=a7; printf("%i ", a7); if(as[8]) as[8]=a8; printf("%i\n", a8); } } printf("=============================================================\n"); printf("=> Somit sind folgende Aussagen richtig:"); for(i=1; i<=8; ++i) if(as[i]) printf(" a%i", i); printf(".\n\n"); return 0; }