Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Logikfrage bzgl. mehrstufigen Verzweigungen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
b@uer



Anmeldungsdatum: 16.11.2009
Beiträge: 3

BeitragVerfasst am: 16.11.2009, 18:10    Titel: Logikfrage bzgl. mehrstufigen Verzweigungen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 16.11.2009, 20:05    Titel: Antworten mit Zitat

Und wie sollen wir wissen, wo in deinem Programm der Fehler liegt, wenn Du es nicht zeigst? Meine Kristallkugel hat heute ihren freien Tag zwinkern .
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
b@uer



Anmeldungsdatum: 16.11.2009
Beiträge: 3

BeitragVerfasst am: 16.11.2009, 20:58    Titel: Antworten mit Zitat

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 durchgeknallt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 17.11.2009, 00:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 17.11.2009, 02:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
b@uer



Anmeldungsdatum: 16.11.2009
Beiträge: 3

BeitragVerfasst am: 18.11.2009, 21:51    Titel: Antworten mit Zitat

Hey,

vielen dank schon mal für eure Antworten! lächeln

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 zwinkern

Gruß
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz