blikk info infothek forum galerie sitemap

Überschrift

anfang zurueck weiter ende nach oben
Beispiel Nr.1:
    -Einige Freunde schmeißen eine Party. Bei den Gästen Berlanda J., Amrain N.
    und Cainelli P. gibt es folgende Probleme:


1.Mit Amrain N. muss auch Berlanda J. eingeladen werden.
2.Entweder Amrain N. oder Cainelli P. wird eingeladen.
3.Berlanda J. und Cainelli P. dürfen nicht gemeinsam eingeladen werden.



Programm:
(*

 * Name:        P.S. & L.L.
 * Klasse:      3IA
 * Datum:       05.02.2007
 * Aufgabe:     Auf einer Party
*)

PROGRAM Wahrheitstabelle;
USES CRT;
PROCEDURE Kopf;                     (*Erzeugt den Kopf der Wahrheitstabelle*)
 VAR i : INTEGER;                                            (*Laufvariable*)
 BEGIN
  (*Kopf erstellen*)
  WRITELN;
  WRITELN ('Amrain N.',' ':4,'Berlanda J.',' ':4,'Cainelli P.',' ':4,'Ergebnis',' ':8);
  FOR i := 1 TO 51 DO
   WRITE ('-');
 END;
PROCEDURE Ausgabe (a, b, c, w : BOOLEAN);          (*Ausgabe der 3 Elemente*)
 BEGIN
  WRITELN('   ');
  WRITE (a:5);                                                 (*A ausgeben*)
  WRITE (b:15);                                                (*B ausgeben*)
  WRITE (c:15);                                                (*C ausgeben*)
  WRITE (w:15);                                         (*Ergebnis ausgeben*)
 END;
PROCEDURE Rechnung;                                        (*Erste Rechnung*)
 VAR a, b, c, erg : BOOLEAN;            (*Variablen fr die Wahrheitstabelle*)
 BEGIN
  KOPF;                                                 (*Kopf wird geladen*)
                (*Mit den For Schleifen werden alle Kombinationen gerechnet*)
  FOR a := FALSE TO TRUE DO
   FOR b := FALSE TO TRUE DO
    FOR c := FALSE TO TRUE DO
     BEGIN
      DELAY(275) ;
      Write('   ');
      erg := (a<=b)AND(a=c)AND(NOT b OR NOT c);(*Wahrheitstabelle berechnen*)
      ausgabe(a, b, c, erg);                     (*Ausgabe der Wertetabelle*)
     END
 END;

VAR a, b, c, erg : BOOLEAN;                (*Variablen der Wahrheitstabelle*)
BEGIN
 CLRSCR;
 TextColor(White);
 (*Ausgabe des Raetsels*)
 WRITELN ('                  Folgendes Raetsel 
 berechnet dieses Programm:');

 WRITELN;
 WRITELN (' Es werden Einladungen verschickt, unter folgenden Bedingungen:');
 WRITELN (' 1. Mit Amrain N. muss auch Berlanda J. eingeladen werden.');
 WRITELN (' 2. Entweder Amrain N. oder Cainelli P., werden gemeinsam eingeladen,');
 WRITELN ('    oder keiner von beiden.');
 WRITELN (' 3. Berlanda J. und Cainelli P. duerfen nicht gemeinsam eingeladen werden.');
 WRITELN;
 WRITELN ('    TRUE = Wahr    FALSE = Falsch');
 WRITELN;
 Rechnung;                    (*Berechnung und Ausgabe der Wahrheitstabelle*)
Writeln;
Writeln;
Writeln('Antwort:');
Writeln('1. Niemand geht zur Party,');
Writeln('  oder');
Writeln('2. nur Berlanda J. geht zur Party');
Readln;
END.


Antwort:
Entweder niemand trinkt oder nur Berlanda J.




Beispiel Nr.2:
Einige Freunde geben sich die Kante!


 

Die Sechs Freunde Franz, Heidi, Josef, Johan, Maria und Lasse, gehen an einem Samstag Abend in eine Bar, um ein Bierchen zu kippen. Allerdings ist die 'Orgie' durch einige Bedingungen eingegrenzt. Diese Bedingungen sind:

1.Wenn Heidi trinkt, dann trinken auch Josef und Johan.
2.Maria und Josef trinken nie zusammen, einer von ihnen jedoch trinkt immer.
3.Wenn Lasse trinkt, dann trinken auch Franz oder Josef.
4.Heidi hasst Johan und deshalb trinken sie nie zusammen, sondern immer nur
  einer von beiden.
5.Johan und Lasse trinken nur gemeinsem oder gar nicht.


Wer trinkt an diesen Abend etwas?



Programm:
(*
 * Name:        P.S. & L.L.
 * Klasse:      3IA
 * Datum:       05.02.2007
 * Aufgabe:
*)

PROGRAM Wahrheitstabelle;
USES CRT;
PROCEDURE Kopf;                      (*Erzeugt den Kopf der Wahrheitstabelle*)
 VAR i : INTEGER;                                             (*Laufvariable*)
 BEGIN
  (*Kopf erstellen*)
  WRITELN;
  WRITELN ('Franz ', ' Heidi ',' Josef ',' Johan ',' Maria ',' Lasse ');
  FOR i := 1 TO 51 DO
   WRITE ('-');
 END;
PROCEDURE Ausgabe(a,b,c,d,e,f,B1,B2,B3,B4,B5,w:BOOLEAN);(*Ausgabe d.Elemente*)

 PROCEDURE SCHREIBE(x:BOOLEAN);
 BEGIN
   IF x= FALSE THEN
     Write ('0')
   ELSE
     Write ('1');
  END;

 BEGIN
  WRITELN(' ');
  Write('  ');Textcolor(green);  Schreibe (a );
  Textcolor(White);  Write('  |  '); Textcolor(green); Schreibe (b );
  Textcolor(White);  Write('  |  '); Textcolor(green); Schreibe (c );
  Textcolor(White);  Write('  |  '); Textcolor(green); Schreibe (d );
  Textcolor(White);  Write('  |  '); Textcolor(green); Schreibe (e );
  Textcolor(White);  Write('  |  '); Textcolor(green); Schreibe (f );
  Textcolor(White);  Write('  | ');
  IF w= TRUE THEN   BEGIN
   TextBackground(RED);
  END;
  Textcolor(White);
  Write   (' ');  Schreibe (B1);
  Write('  |');  Schreibe (B2);
  Write('  |');  Schreibe (B3);
  Write('  |');  Schreibe (B4);                            (*Werte Ausgaben*)
  Write('  |');  Schreibe (B5);
  Write('  |');  Schreibe (w);
  TEXTBackground(Blue);
 END;
PROCEDURE Rechnung;                                         (*Erste Rechnung*)
 VAR
 z: INTEGER;
 a,b,c,d,e,f,B1,B2,B3,B4,B5,erg:BOOLEAN;(*Variablen fr die Wahrheitstabelle*)
 BEGIN
  KOPF;                                                  (*Kopf wird geladen*)
  z:=0;
            (*Mit den For Schleifen werden alle Kombinationen gerechnet*)
  FOR a := FALSE TO TRUE DO
   FOR b := FALSE TO TRUE DO
    FOR c := FALSE TO TRUE DO
     FOR d := FALSE TO TRUE DO
      FOR e := FALSE TO TRUE DO
        FOR f := FALSE TO TRUE DO
     BEGIN
      DELAY(275) ;
      Write('   ');
      B1:=(b <= (d AND c));
      B2:=(e <> c);
      B3:=(f <= (a OR c));
      B4:=(b XOR d);
      B5:=(D = F);
      erg:=B1 AND B2 AND B3 AND B4 AND B5;
      ausgabe( a,b,c,d,e,f,B1,B2,B3,B4,B5,erg);   (*Ausgabe der Wertetabelle*)
      z:= z+1;
      IF z MOD 4= 0 THEN BEGIN
        Writeln;
        Write('-----|-----|-----|-----|-----|-----|--------------------------');
      END
     END
 END;

VAR a, b, c, d, e, f, erg : BOOLEAN;        (*Variablen der Wahrheitstabelle*)
BEGIN
 CLRSCR;
 TextBackground(Blue);
 Writeln;
 Write (' Die sechs Freunde ');
 TextColor(yellow); Write('Franz, Heidi, Josef, Johan, Maria ');
 Textcolor(White);  Write('und'); TextColor(yellow); Write(' Lasse ');
 Textcolor(White);  Writeln('treffen sich an');
 Write(' einem Samstag Abend, um mal so richtig');
 Writeln (' auf den Putz zu hauen und sich die ');
 Write (' absolute Kante zu geben. ');
 Writeln ('Dabei gelten folgende Bedingungen:');
 Writeln;
 TextColor(yellow);Write(' 1.');
 Writeln('Wenn Heidi Alkohol trinkt, dann trinken auch Josef und Johann. ');
 TextColor(yellow);Write(' 2.');
 Write('Maria und Josef trinken nicht zusammen, aber einer von beiden ');
 Writeln('trinkt immer.');
 TextColor(yellow);Write(' 3.');
 Writeln('Wenn Lasse trinkt, dann trinkt auch Franz oder Josef.');
 TextColor(yellow);Write(' 4.');
 Writeln('Heidi hasst Johan, deshalb trinken sie nie gemeinsam.');
 TextColor(yellow);Write(' 5.');
 Write('Johan und Lasse trinken nur gemeinsam, ansonsten trinkt keiner von Beiden');
 Writeln;
 Writeln;
 Writeln;
 Writeln;
 Writeln;
 Writeln;
 Writeln;
 Writeln;
 Writeln;
 Writeln;
 Writeln(' Zur Auswertung des Problems drcken sie bitte die Return-Taste und');
 Writeln(' achten sie dabei auf die rot markierten Zeilen. Diese geben die Stelle');
 Write  (' an, an welchen alle Bedingungen erfllt sind.');
 Readln;
 ClrScr;
 TextBackGround(Blue);                
(*Ausgabe des Raetsels*)

 Rechnung;                     (*Berechnung und Ausgabe der Wahrheitstabelle*)
END.


Fazit des Rätsels:

1. Nur Josef, Johan und Lasse trinken.
2. Alle trinken, außer Heidi und Josef.
3. Heidi und Maria trinken nichts.



Zurück zur Theorieseite: Hier Klicken

nach oben