 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
b@uer
Anmeldungsdatum: 16.11.2009 Beiträge: 3
|
Verfasst am: 16.11.2009, 18:10 Titel: Logikfrage bzgl. mehrstufigen Verzweigungen |
|
|
Hey,
ich weiß nicht ob ich hier richtig bin... aber notfalls kann mans ja verschieben.
Also, ich arbeite noch mit der Basic Urversion (die, bei der man noch mit 10 20 etc nummerieren muss) - steinigt mich deswegen, doch hat das mehrere Gründe; zum Einen hab ich ein praktisches Buch dazu hier, zum Anderen will ich vorerst mal "erste Schritte" gehen.
Das Buch (strukturiertes Programmieren mit Basic von Rüdeger Baumann) ist auch der Anlass meines Problems. Ich bin derzeit am Kapitel mehrstufiger Verzweigungen - da ist als Beispielaufgabe folgendes Szenario:
Bewerbung, bei der es 5 Tests zu bestehen gilt. (Bei jedem Test lassen sich max. 10 Punkte erreichen)
Wenn min. 4 Tests mindestens 8 Punkte haben, dann sofort einstellen.
Wenn min. 1 Test 8 Punkte und min. 4 Tests >=6 Punkte haben, dann Einstellungskurs.
Ansonsten: Nicht einstellen.
"Skizze:"
n8 = Tests mit min. 8 Pkt
n6 = Tests mit min. 6 Pkt
...werden vorher durch Eingabe bestimmt.
"If 1 <= n8 AND n8 < 4 AND 4 <= n6 Then [...]"
So, für mich liest sich das so: Die Bedingung kann NUR dann erfüllt werden, wenn n6 MINDESTENS (!!) gleich oder größer 4 ist.
Wenn ich allerdings 2 Tests mit 8 Pkt hab (n8 = 2) und 3 Tests mit 6 Pkt (n6 = 3), dann wäre die 2. Bedingung ja nicht erfüllt, oder?
Im Programm wird die Bedingung aber dennoch als wahr (=geht zum Kurs) deklariert.
Tja, irgendwie hindert mich das am weitermachen, irgendwo hab ich ein Denkfehler, den ich beheben möchte... doch ich weiß nicht worans genau liegt. Kann mir jmd. auf die Sprünge helfen? |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 16.11.2009, 20:05 Titel: |
|
|
Und wie sollen wir wissen, wo in deinem Programm der Fehler liegt, wenn Du es nicht zeigst? Meine Kristallkugel hat heute ihren freien Tag . _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
b@uer
Anmeldungsdatum: 16.11.2009 Beiträge: 3
|
Verfasst am: 16.11.2009, 20:58 Titel: |
|
|
Peace,
na, das Problem liegt ja nicht in "meinem" Programm (denn das funktioniert tadellos), sondern im Kopf - ich versteh nicht, wie eine Bedingung erfüllt werden kann, die im Prinzip nicht erfüllt ist:
"If 1 <= n8 AND n8 < 4 AND 4 <= n6 Then [...]"
Angenommen, es werden 2 Tests mit 8 Points und 3 mit 6 bewertet - das Programm (selbst wenn mans wie im bsp 1:1 abtipt) gibt dann "zum Kurs" aus.
Doch die Bedingung 4 <= n6 ist ja NICHT erfüllt? Oder weiß der Rechner, sobald mehr als 1 n8 da ist, dass von der n6 eins weggenommen werden kann?
Code: | 10 Input "Name "; N$
20 Let N8=0
30 Let N6=0
40 Input "1. "; P
50 If P < 0 OR P > 10 THEN 40
60 If P >= 8 Then Let N8=N8+1
70 If P >= 6 Then Let N6=N6+1
80 Input "2. "; P
90 If P < 0 OR P > 10 THEN 80
100 If P >= 8 Then Let N8=N8+1
110 If P >= 6 Then Let N6=N6+1
120 Input "3. "; P
130 If P < 0 OR P > 10 THEN 120
140 If P >= 8 Then Let N8=N8+1
150 If P >= 6 Then Let N6=N6+1
160 Input "4. "; P
170 If P < 0 OR P > 10 THEN 160
180 If P >= 8 Then Let N8=N8+1
190 If P >= 6 Then Let N6=N6+1
200 Input "5. "; P
210 If P < 0 OR P > 10 THEN 200
220 If P >= 8 Then Let N8=N8+1
230 If P >= 6 Then Let N6=N6+1
240 If 4 <= N8 THEN Let E$ = " Wird eingestellt"
250 If 1 <= N8 AND N8 < 4 AND 4 <= N6 THEN Let E$ = " Kurs"
260 If N8 = 0 OR N6 < 4 THEN LET E$ = " nicht eingest."
270 Print "Herr "; N$; E$
|
Gruß
P.S: Btw. irgendwie ist die Glaskugel IMMER zum falschen Zeitpunkt in der Reinigung bzw. im Urlaub.. hmm  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 17.11.2009, 00:46 Titel: |
|
|
N8 speichert die Anzahl der Tests mit mindestens 8 Punkten. N6 speichert die Anzahl der Tests mit mindestens 6 Punkten (inklusive derer mit 8 oder mehr Punkten). Eine Einstellung findet statt, wenn 4 <= N8 (obwohl ich für das eigene Verständnis lieber N8 >= 4 schreiben würde). Das entspricht deiner Bedingung 1. Die zweite Bedingung tritt ein, wenn 1 <= N8 AND N8 < 4 AND 4 <= N6; d. h. 1, 2 oder 3 Tests mit mind. 8 Punkten, und insgesamt mindestens 4 Tests mit mindestens 6 Punkten (wie gesagt, inklusive der Tests, bei denen 8 Punkte oder mehr erzielt wurden). Das ist deine Bedingung 2. Das Programm scheint mir also genau das zu machen, was es soll.
(Rechenbeispiel: 5 Tests mit den Punkten 7, 3, 8, 6, 9. Dann ist N8 = 2 und N6 = 4, also Einstellungskurs.) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 17.11.2009, 02:46 Titel: |
|
|
Hallo
Wenn N6 die Ergebnisse mit acht und mehr Punkten nicht mitzählen würde wie du gedacht hast, dann würde man hier bei N8 >1 rausfliegen, weil dann automatisch die Bedingung N6 < 4 erfüllt ist:
Code: | 260 If N8 = 0 OR N6 < 4 THEN LET E$ = " nicht eingest." |
b@uer hat Folgendes geschrieben: | Wenn min. 1 Test 8 Punkte und min. 4 Tests >=6 Punkte haben, dann Einstellungskurs. |
Meinst du damit, dass man einen Test mit mindestens acht Punkten bestehen muss und zusätzlich vier andere mit mindestens sechs? Dann könntest du es vielleicht so machen:
N6 = 5, weil ja dann die Summe von Tests mit 8 und mehr und solchen mit 6 bzw. 7 Punkten immer fünf ergeben muss und du diese Summe in N6 speicherst.
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
b@uer
Anmeldungsdatum: 16.11.2009 Beiträge: 3
|
Verfasst am: 18.11.2009, 21:51 Titel: |
|
|
Hey,
vielen dank schon mal für eure Antworten!
Ahh ok, ja das war mir eben nicht klar ob bei Punkten oberhalb der 8 n6 stehenbleibt oder nicht. Wenn es auch mitgezählt wird ist mir das Prinzip klar... ja das Proggi tut was es soll, nur der Kopf hinkte hinterher.
In dem Fall kann ich ja leichten Gewissens weiterlernen - danke auch für dein anderes Beispiel, Skilltronic. So fällts auch leichter die ganze Geschichte nachzuvollziehen.
Jetzt gehts weiter mit nem Programm dass Buchstaben alphabetisch ordnen soll... Grundidee besteht, ich hoffe nicht dass ich deswegen bald wieder auf der Matte hier steh
Gruß |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|