Übungsaufgabe für alle :: Nr. 1
Übersicht

![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das würde ja heißen das ich das ganze nochmal schreiben muss. Das while nicht erlaubt ist wurde nicht erwähnt. | ||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja irgendwie aber verständlich, der sinn des ganzen war ja, das ganze ohne bedingungen zu programmieren... | ||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ja ich weiss schon das das inifiziennt ist.... Ich habs auch nicht so gemacht, ist mir erst in einer langweiligen Schulstunde in den Sinn gekommen... ![]() cu simi |
||
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
gerade das... es ist nicht ineffizient...
es wird nur noch EINE machinecode instruction mehr ausgeführt... |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Holzchopf bat mich, seinen Beitrag hier zu posten. Das sei hiermit getan.
Code: [AUSKLAPPEN] ;========================
; Holzchopfs ausführliche Variante ; Initialisierung Graphics 400,300,16,2 Const menge1_max = 450 Const menge2_max = 500 Const menge3_max = 600 Const menge4_max = 750 ; Eingabe menge1 = Input( "Gramm von Zutat 1:" ) menge2 = Input( "Gramm von Zutat 2:" ) menge3 = Input( "Gramm von Zutat 3:" ) menge4 = Input( "Gramm von Zutat 4:" ) Print "Beträgt die Raumptemperatur 30°C oder mehr? [J/N]" raumtemp = ( Lower( Input$() ) = "j" ) Print "Ist der Arbeitsplatz sauber? [J/N]" sauber = ( Lower( Input$() ) = "j" ) Print "Wird eine Absaugvorrichtung verwendet? [J/N]" absaug = ( Lower( Input$() ) = "j" ) ; Berechnung nach dem Schema: ; ; ,--, ,---, ,--, ; Zutat 1 ---|>0|--| | | | ; :--: |AND|--| | ; Zutat 4 ---|>0|--| | | | ; `--` `---` | | ; | | ; Zutat 1 max -, | | ; | | | ; ,--, ,--, | | ; Zutat 1 ---|> |--| | | | ; `--` | | | | ; Zutat 2 max -, | | | | ; | | | | | ; ,--, | | | | ; Zutat 2 ---|> |--| | | | ; `--` | | | | ; Zutat 3 max -, | | | | ; | |OR|---| | ; ,--, | | | | ; Zutat 3 ---|> |--| | | | ; `--` | | |OR|--- Explodieren ; Zutat 4 max -, | | | | ; | | | | | ; ,--, | | | | ; Zutat 4 ---|> |--| | | | ; `--` `--` | | ; | | ; ,---, | | ; Zutat 2 ---| | ,----, | | ; | + |-|>600|-| | ; Zutat 3 ---| | `----` | | ; `---` | | ; | | ; ,--, ,---, | | ; Raumtemp --| | | | | | ; |OR|--| | | | ; Sauber ---o| | |AND|--| | ; `--` | | | | ; Absaug ---------o| | | | ; `---` `--` Explosion = menge1 > 0 And menge4 > 0 Explosion = Explosion Or ( menge1 > menge1_max Or menge2 > menge2_max Or menge3 > menge3_max Or menge4 > menge4_max ) Explosion = Explosion Or ( ( menge2 + menge3 ) > 600 ) Explosion = Explosion Or ( ( raumtemp Or ( Not sauber ) ) And ( Not absaug ) ) ; Ausgabe Print "Das gemisch würde " + Mid$( "nicht ", 1, ( Not Explosion ) * 6 ) + "explodieren!" Print "Die Verbindung ist stabil: " + ( Not Explosion ) WaitKey() End |
||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
netter ansatz, da wär ich glaub ich nicht drauf gekommen. Hier mal meine Variante.
Code: [AUSKLAPPEN] graphics 800,600,32,2 setbuffer frontbuffer() Const maxGramm1 = 500 Const maxGramm2 = 500 Const maxGramm3 = 500 Const maxGramm4 = 500 local Zutat1,Zutat2,Zutat3,Zutat4 Local Temperatur, Abzug, Dreck Local Gemisch=0 Local temp,temp2 .start Zutat1 = Input("Menge 1.Zutat (Gramm): ") zutat2 = Input("Menge 2.Zutat (Gramm): ") Zutat3 = Input("Menge 3.Zutat (Gramm): ") Zutat4 = Input("Menge 4.Zutat (Gramm): ") Temperatur = Input("Ist die Temperatur über 30°C? (1/0): ") Abzug = Input("Ist ein Abzug vorhanden? (1/0): ") Dreck = Input("liegt irgendwo Dreck rum? (1/0): ") Gemisch = 0 ;Abfragen ob man nicht zuviel genommen hat temp = maxGramm1 - Zutat1 temp = temp Shr 31 Gemisch = Gemisch + temp ;Ausgenutzt wird bei dieser "Abfrage" das Sign-Bit, welches ;Signalisiert, ob eine Zahl negativ oder Positiv ist. Dieses ;bekommt man an die Stelle 1 mit Shr. Wenn es gesetzt war ;ist temp also 1 ansonsten 0 temp = maxGramm2 - Zutat2 temp = temp Shr 31 Gemisch = Gemisch + temp temp = maxGramm3 - Zutat3 temp = temp Shr 31 Gemisch = Gemisch + temp temp = maxGramm4 - Zutat4 temp = temp Shr 31 Gemisch = Gemisch + temp ;Abfragen ob die Mischung aus 1 und 4 besteht temp = - Zutat1 temp = temp Shr 31 temp2 = - Zutat4 temp2 = temp2 Shr 31 temp = temp + temp2 temp = temp shr 1 Gemisch = Gemisch + temp ;Abfragen ob die Summe von 2 und 3 über 600 Gramm ist temp = 600 - (Zutat2 + Zutat3) temp = temp shr 31 Gemisch = Gemisch + temp ;Abfragen ob die Temp über 30° ist oder ob es einen Abzug gibt temp = (Temperatur - Abzug) temp = temp and 1 Gemisch = Gemisch + temp ;Abfragen ob die Umbegung dreckig ist oder ob es nen Abzug gibt temp = (Dreck - Abzug) temp = temp And 1 Gemisch = Gemisch + temp print Gemisch Print "1 steht für <<geht in die Luft>>, 0 steht für <<ist stabil>>" print ".................................." print "nochmal? taste drücken!" waitkey() goto Start end |
||
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und hier meins, mit dem bösen While-Schleifen ![]() Code: [AUSKLAPPEN] Graphics 640,480 Print "Wilkommen beim Laborsimulator" Delay 2000 Name$=Input$("Wie ist ihr Name? > ") Cls Locate 0, 0 Print "Hallo " + Name$ Delay 2000 Print "Heute werden Sie ein pyrotechnisches Experiment durchführen." Print "Sie bekommen 4 Zutaten die Sie beliebig mischen können. " Delay 5000 Print "Seien Sie aber vorsichtig mit der Dosierung, sonnst kann es zu einer heftigen" Print "Reaktion (warscheinlich Explosion) kommen die alle Substanzen zerstören oder" Print "sehr gesundheitsschädigen für Sie sein kann." Print "Weiter mit beliebiger Taste." WaitKey Cls Locate 0, 0 Print "Fangen wir an. Delay 2000 Print "Diese 4 Zutaten stehen ihnen zur Verfügung:" Print "1. Schwarzpulver, 2. Strontium, 3. Schwefel, 4. Kaliumnitrat" Print "Weiter mit beliebiger Taste." WaitKey Cls Locate 0, 0 Konstant=400 Print "Nun folgt das Mischen der Zutaten!" Print "Geben Sie weiter Unten die Menge für die Substanzen in Gramm an! " Print "Die maximale Grammzahl pro Zutat darf " + Konstant + " nicht ueberschreiten!" Print "Soll eine Zutat nicht verwendet werden, geben Sie bitte 0 an!" z1=Input$("1.Zutat: Schwarzpulver > ") z2=Input$("2.Zutat: Strontium > ") z3=Input$("3.Zutat: Schwefel > ") z4=Input$("4.Zutat: Kaliumnitrat > ") Repeat Cls Locate 0, 0 Print "Haben Sie den laborinternen Sicherheitsabzug in Betrieb?" Abzug$=Input$("(j/n) ") Delay 500 While Not Abzug$="j" Or Abzug$="J" Or Abzug$="n" Or Abzug$="N" Print "Antworten Sie bitte nur mit j oder n." Delay 2000 Exit Wend Until Abzug$="j" Or Abzug$="J" Or Abzug$="n" Or Abzug$="N" Repeat Cls Locate 0, 0 Print "Ist die aktuelle Raumtemperatur ueber 30°?" Temperatur$=Input$("(j/n) ") Delay 500 While Not Temperatur$="j" Or Temperatur$="J" Or Temperatur$="n" Or Temperatur$="N" Print "Antworten Sie bitte nur mit j oder n." Delay 2000 Exit Wend Until Temperatur$="j" Or Temperatur$="J" Or Temperatur$="n" Or Temperatur$="N" Repeat Cls Locate 0, 0 Print "Ist der Arbeitsbereich gereinigt?" Sauber$=Input$("(j/n) ") Delay 500 While Not Sauber$="j" Or Sauber$="J" Or Sauber$="n" Or Sauber$="N" Print "Antworten Sie bitte nur mit j oder n." Delay 2000 Exit Wend Until Sauber$="j" Or Sauber$="J" Or Sauber$="n" Or Sauber$="N" ; Hier werden die Bedingungen für das Ergebnis festgelegt While z1>0 And z4 >0 Gosub Explosion Print "Grund: Zutat 1 und 4 Dürfen nicht gemischt werden!" WaitKey End Wend While z1>Konstant Or z2>Konstant Or z3>Konstant Or z4>Konstant Gosub Explosion Print "Grund: Die maximale Grammzahl wurde ueberschritten." WaitKey End Wend While z2+z3>600 Gosub Explosion Print "Grund: Zutat 2 und 3 wurden falsch gemischt." WaitKey End Wend While Abzug$="n" Or Abzug$="N" And Temperatur$="j" Gosub Explosion Print "Grund: Bei zu hoher Temperatur ohne Sicherheitsabzug gearbeitet." WaitKey End Wend While Abzug$="n" Or Abzug$="N" And Temperatur$="J" Gosub Explosion Print "Grund: Bei zu hoher Temperatur ohne Sicherheitsabzug gearbeitet." WaitKey End Wend While Abzug$="n" Or Abzug$="N" And Sauber$="n" Gosub Explosion Print "Grund: Auf verschmutzten Arbeitsplatz ohne Sicherheitsabzug gearbeitet." WaitKey End Wend While Abzug$="n" Or Abzug$="N" And Sauber$="N" Gosub Explosion Print "Grund: Auf verschmutzten Arbeitsplatz ohne Sicherheitsabzug gearbeitet." WaitKey End Wend Cls Locate 0, 0 Print "Herzlichen Glückwunsch " + Name$ + ", das Experiment war erfolgreich, da" Print "es zu keiner Explosion geführt hat. 1 setzen! :) " Print "Beliebige Taste beendet das Programm." WaitKey End .Explosion Cls Locate 0, 0 Print "Leider ist Ihnen beim Mixen ein Fehler unterlaufen und die Mischung" Print "ist explodiert. Das Experiment ist Gescheitert." Return Is n bissel Textadventuremäßig geworden.... |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Const C_G1=500 Const C_G2=500 Const C_G3=500 Const C_G4=500 .anfang Cls Locate 0,0 G1 = Input("Zutat1 Menge:") G2 = Input("Zutat2 Menge:") G3 = Input("Zutat3 Menge:") G4 = Input("Zutat4 Menge:") RT = Input("Temperatur > 30°C:") AS = Input("Arbeitsbereich sauber:") SA = Input("Sicherheitsanzug:") Dim ausgabe$(1) ausgabe(0) = "FALSE" ausgabe(1) = "TRUE" explo1 = (G1 > 0) And (G4 > 0) explo2 = (G1 > C_G1) Or (G2 > C_G2) Or (G3 > C_G3) Or (G4 > C_G4) explo3 = (G2+G3)>600 explo4 = (Not(SA)) And (RT Or AS) a = (explo1+explo2+explo3+explo4) > 0 Print ausgabe(Not(a))+" "+explo1+explo2+explo3+explo4 WaitKey() Goto anfang |
||
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Öhm, kann man den Select- und If-Abfragenverbot nicht ganz einfach mit Repeat-Until-Schleifen umgehen? | ||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke wunderkind für das Posten meines Beitrages ![]() Dachte drum irgendwie, da kämen dann um 22:00Uhr plötzlich 1000e mit ihren Antworten und Lösungen und ich wollte halt dann nicht der letzte sein, der seine Lösung kundtut. Ehrlich gesagt, ging ich davon aus, dass alle Blitzer wissen wie man die Boolschen Operatoren gut einsetzen kann. Oder liegt es nicht daran, dass hier so wenig Lösungen vorliegen? ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
ehrlich gesagt fand ich es ein bisschen uninteressant... ![]() es war ja schliesslich eine beginner contest... oder? ![]() |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun ja, dann war ich wohl der einziege Anfänger der mitgemacht hat oder wie ![]() |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja stimmt, hab ganz vergessen, dass wir uns hier ja im Beginner-Bereich befinden, wo die meisten Profis sowieso nie reingucken. Aber eine Herausforderung wärs bestimmt auch für einige von denen, die sich selbst als Profi schimpfen ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um komplett auf drumherum zu verzichten und sich ausschließlich auf boolsche Operationen zu beschränken, musste man schon ein wenig sein hirn bemühen. Hat schon jemand alle Lösungen kontrolliert und durchprobiert? | ||
Timo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich habe keine Boolschen Operationen wie >, < verwendet, wollte gucken ob es auch anders geht --- und es geht ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Korrigiert mich, aber <,> und = sind doch Vergleichoperatoren und keine boolschen Operatoren wie And, Or, Not oder Xor ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja da hast du recht. Halbwegs. Denn = ist 'eigentlich' ein boolscher Operator, nämlich das Äquivalenzoder (eben gleichheit), KA wieso das ein oder im Namen hat, heisst aber so. Dann gibts ja noch das Xor, welches eigentlich Antivalenzoder heisst (ungleich). Ich weiss jetzt allerdings nicht, ob sich diese Operanden nur auf 1-Bitige Eingänge beziehen oder auch auf solche, die Werte im Millionenbereich annehmen können.
Interessant ist noch die Tatsache, wie Blitz mit den Beiden umgeht: Code: [AUSKLAPPEN] Print ( 15 Xor 2 ) Print ( 15 Xor 15 ) Print Not( 15 Xor 2 ) Print Not( 15 Xor 15 ) Print ( 15 = 2 ) Print ( 15 = 15 ) WaitKey() End Wie man sieht, sieht Blitz = und Xor in Verbindung mit Not als Wahrheitsoperatoren der ganzen Zahlen, während Xor alleine alle Bits aus dem Integerwert vergleicht. |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
not 0 -> 1
not 1 -> 0 0 or 0 -> 0 0 or 1 -> 1 1 or 0 -> 1 1 or 1 -> 1 0 and 0 -> 0 0 and 1 -> 0 1 and 0 -> 0 1 and 1 -> 1 0 xor 0 -> 0 0 xor 1 -> 1 1 xor 0 -> 1 1 xor 1 -> 0 0 = 0 -> 1 0 = 1 -> 0 1 = 0 -> 0 1 = 1 -> 1 00 xor 00 -> 00 00 xor 01 -> 01 00 xor 10 -> 10 00 xor 11 -> 11 01 xor 00 -> 01 01 xor 01 -> 00 01 xor 10 -> 11 01 xor 11 -> 10 10 xor 00 -> 10 10 xor 01 -> 11 10 xor 10 -> 00 10 xor 11 -> 01 11 xor 00 -> 11 11 xor 01 -> 10 11 xor 10 -> 01 11 xor 11 -> 00 ;-------- das hier: C = (A = B) kann man auch so schreiben: C = not (A xor B) und: C = (A <> B) wird: C = (A xor B) ;-------- (0 or 0) xor 0 -> 0 (0 or 1) xor 0 -> 1 (1 or 0) xor 0 -> 1 (1 or 1) xor 0 -> 1 (0 or 0) xor 1 -> 1 (0 or 1) xor 1 -> 0 (1 or 0) xor 1 -> 0 (1 or 1) xor 1 -> 0 |
||
Norweger...
Spreche aber verdammt gut 8086 |
Sibitiger |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab auch eine Lösung ich hab aber nicht abgeschrieben falls das jetzt jemand denkt.
Ich habe zwar nicht die anderen Progs geprüft aber meins funktioniert, das hab ich getestet ![]() Code: [AUSKLAPPEN] ;by Sibitiger Graphics 400,400,256,2 Const mx1=500 Const mx2=675 Const mx3=753 Const mx4=500 Print "Antworte anstatt mit ja-nein immer mit 1-0" Z1=Input("1. Zutat in Gramm:") Z2=Input("2. Zutat in Gramm:") Z3=Input("3. Zutat in Gramm:") Z4=Input("4. Zutat in Gramm:") dreck=Input("Ist die Arbeitsfläche sauber:") Temp=Input("Wie ist die Raumtemperatur:") Sicher=Input("Wird ein Sicherheitsabzug verwendet:") ExploSi=Sicher Explo23=(Z2+Z3)>600 Explo1=(mx1>Z1) Xor 1 Explo2=(mx2>Z2) Xor 1 Explo3=(mx3>Z3) Xor 1 Explo4=(mx2>Z4) Xor 1 Explodreck=dreck And ExploSi ExploTemp=(30>Temp Xor 1) And ExploSi ;Explosi=Sicher Explosi=Sgn(Explodreck+Explotemp) Explo=Sgn(Explo23+Explo1+Explo2+Explo3+Explo4) Print "1 steht dafür, dass das Gemisch explodieren würde Print "und 0 steht dafür, dass es stabil bleibt:" Print Explo WaitKey() End [EDIT] sry, das is halb falsch muss so heißen: Code: [AUSKLAPPEN] ;by Sibitiger Graphics 400,400,256,2 Const mx1=500 Const mx2=675 Const mx3=753 Const mx4=500 Print "Antworte anstatt mit ja-nein immer mit 1-0" Z1=Input("1. Zutat in Gramm:") Z2=Input("2. Zutat in Gramm:") Z3=Input("3. Zutat in Gramm:") Z4=Input("4. Zutat in Gramm:") dreck=Input("Ist die Arbeitsfläche sauber:") Temp=Input("Wie ist die Raumtemperatur:") Sicher=Input("Wird ein Sicherheitsabzug verwendet:") ExploSi=Sicher Explo23=(Z2+Z3)>600 Explo1=(mx1>=Z1) Xor 1 Explo2=(mx2>=Z2) Xor 1 Explo3=(mx3>=Z3) Xor 1 Explo4=(mx2>=Z4) Xor 1 Explodreck=dreck And ExploSi ExploTemp=(30>=Temp Xor 1) And ExploSi ;Explosi=Sicher Explosi=Sgn(Explodreck+Explotemp) Explo=Sgn(Explo23+Explo1+Explo2+Explo3+Explo4) Print "1 steht dafür, dass das Gemisch explodieren würde Print "und 0 steht dafür, dass es stabil bleibt:" Print Explo WaitKey() End [/EDIT] |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group