| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen | 
	
	
		| Autor | Nachricht | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 06.03.2013, 23:48    Titel: Zählerproblem? |   |  
				| 
 |  
				| Ich versuche eine IF-Abfrage zu realisieren die zwei Werte miteinander vergleicht und dann eine Aktion auslöst. 
 Der 1. Wert soll wie folgt zählen: +3 -2 +3 -1 +3 -2 +3 -1 +3 ...
 der 2. Wert zählt nach dem gleichen Schema wie der 1. Wert.
 Und ein 3. Wert der ebenfalls wie die ersten beiden Werte in der IF-Abfrage steht, zählt dabei immer 1 nach oben. Damit man weiß wie oft die Schleife durchlaufen ist!
 
 Ich weiß im Moment noch nicht wie ich das am besten realisiere.
 
 Habe schon an Mod bzw. einer For-Next Schleife gedacht. Falls das damit überhaupt geht. Stehe etwas auf dem Schlauch momentan.
 
 Wuerfel ist ein vorher rein zufällig definierter Wert.
 Wert 1 fängt bei irgendeiner Zahl an.
 Wert 2 fängt ebenfalls bei irgendeiner Zahl an.
 
 
  	  | Code: |  	  | DO IF Wuerfel > Wert1 AND Wuerfel < Wert2 THEN ' Aktion
 ???
 LOOP
 | 
 
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nemored 
 
  
 Anmeldungsdatum: 22.02.2007
 Beiträge: 4711
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 07.03.2013, 01:04    Titel: |   |  
				| 
 |  
				| Ich würde vermutlich etwas in der Art machen: 
  	  | Code: |  	  | RANDOMIZE TIMER DIM AS INTEGER wert1(0 to 3) = {3, -2, 3, -1}, wert2(0 to 3) = {3, -2, 3, -1}
 DIM AS INTEGER zaehler1 = INT(RND*4), zaehler2 = INT(RND*4)
 
 ' Testlauf
 FOR i AS INTEGER = 1 TO 20
 PRINT wert1(zaehler1), wert2(zaehler2)
 zaehler1 = (zaehler1 + 1) MOD 4
 zaehler2 = (zaehler2 + 1) MOD 4
 NEXT
 GETKEY
 | 
 Zwei verschiedene Arrays sind natürlich überflüssig, wenn sie sowieso dieselben Werte besitzen. Mit IF-Abfragen könnte man auch ganz auf Arrays verzichten; so ist es aber flexibler für mögliche spätere Änderungen.
 _________________
 Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 07.03.2013, 09:24    Titel: |   |  
				| 
 |  
				| Die IF-Abfrage muss schon sein. Es wird geprüft, ob ein Wert der selbe ist wie der andere und dann eine Aktion ausgelöst! Es gibt keine Printausgabe! 
 Die Abfrage kann man aber sicher irgendwie in deinem Beispiel einfügen nehme ich mal an.
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ThePuppetMaster 
 
  
 Anmeldungsdatum: 18.02.2007
 Beiträge: 1839
 Wohnort: [JN58JR]
 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 10.03.2013, 08:31    Titel: |   |  
				| 
 |  
				|  	  | Code: |  	  | SCREENRES 640,320,32 
 RANDOMIZE TIMER
 DIM AS INTEGER R1, R2, i, k, Rk
 I = 51
 k = 0
 Rk = 0
 R1 = 0
 R2 = 3
 DO
 IF k = 1 OR k = 3 THEN R1 += 3: R2 += 3
 IF k = 2 THEN R1 -= 2: R2 -= 2
 IF k = 4 THEN R1 -= 1: R2 -= 1
 IF Rk > R1 AND Rk < R2 THEN BEEP
 LOCATE i + 1, 5: PRINT R1; " "; R2
 k += 1
 i += 1
 IF k > 4 THEN k = 1
 IF i > 72 THEN EXIT DO
 LOOP
 GETKEY
 END
 | 
 
 Habe es selber lösen können! Der Quellcode macht genau das was ich will.
 Vielleicht geht es noch besser, eleganter?
 
 Auf jeden Fall klappt es!
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ThePuppetMaster 
 
  
 Anmeldungsdatum: 18.02.2007
 Beiträge: 1839
 Wohnort: [JN58JR]
 
 | 
			
				|  Verfasst am: 10.03.2013, 13:03    Titel: |   |  
				| 
 |  
				| lies dir den link durch, den ich dir gepostet habe. du hast nämlich noch immer einen fehler im sourcecode. 
 
 MfG
 TPM
 _________________
 [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nemored 
 
  
 Anmeldungsdatum: 22.02.2007
 Beiträge: 4711
 Wohnort: ~/
 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ThePuppetMaster 
 
  
 Anmeldungsdatum: 18.02.2007
 Beiträge: 1839
 Wohnort: [JN58JR]
 
 | 
			
				|  Verfasst am: 10.03.2013, 14:27    Titel: |   |  
				| 
 |  
				| ok. nehm alles zurück.   
 bei mir grads diesbezüglich schon oft probs. kurios.
 
 
 MfG
 TPM
 _________________
 [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 10.03.2013, 15:54    Titel: |   |  
				| 
 |  
				|  	  | ThePuppetMaster hat Folgendes geschrieben: |  	  | lies dir den link durch, den ich dir gepostet habe. du hast nämlich noch immer einen fehler im sourcecode. 
 MfG
 TPM
 | 
 Wirklich???
 Das Programm funktioniert aber, so wie ich es brauche!?
 Sehe auf den ersten Blick keinen Fehler.
 
 Ein Test sagt mir, dass die richtigen Zahlen ausgespuckt werden.
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nemored 
 
  
 Anmeldungsdatum: 22.02.2007
 Beiträge: 4711
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 10.03.2013, 17:18    Titel: |   |  
				| 
 |  
				| Es geht (u. a.) um die Stelle 
  	  | Code: |  	  | IF k = 1 OR k = 3 THEN R1 += 3: R2 += 3 | 
 Sicherer wäre es, zu klammern, damit die richtige Abarbeitungsreihenfolge auf jeden Fall gewährleistet ist:
 
  	  | Code: |  	  | IF (k = 1) OR (k = 3) THEN R1 += 3: R2 += 3 | 
 Allerdings binden die Vergleichsoperatoren =, < und > stärker als AND und OR, weshalb der Code durchaus korrekt arbeitet.
 
 Übrigens ist mir erst durch deinen Code klar geworden, was du in deiner Fragestellung genau wolltest. War etwas unklar formuliert.
  _________________
 Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 10.03.2013, 23:06    Titel: |   |  
				| 
 |  
				| Macht nichts. Wurde ja zum Schluss noch aufgeklärt. 	  | Zitat: |  	  | Übrigens ist mir erst durch deinen Code klar geworden, was du in deiner Fragestellung genau wolltest. War etwas unklar formuliert. happy | 
 
 Wieso sicherer? Kann es sein, dass bei anderen Computern es Probleme gibt? Funktionieren tut es ja korrekt. Bisher hatte ich bei so was noch nie Probleme.
 
 Kleine Quizzfrage: Wem kommen die ausgegebenen Zahlen bekannt vor?
 (Die Zahlen ergeben ein bestimmtes Muster, das jedem bekannt sein dürfte)
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| nemored 
 
  
 Anmeldungsdatum: 22.02.2007
 Beiträge: 4711
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 10.03.2013, 23:40    Titel: |   |  
				| 
 |  
				| [quote="ALWIM"]  	  | Zitat: |  	  | Wieso sicherer? Kann es sein, dass bei anderen Computern es Probleme gibt? | 
 Nein, höchstens in anderen Programmiersprachen, die das anders regeln (ist aber auch eher unwahrscheinlich). Unsicher wird es in dem Augenblick, in dem du glaubst, der Compiler würde es auf eine bestimmte Art und Weise interpretieren, er das aber anders macht. Solange du dir sicher bist, was du tust, ist alles in Ordnung.
 _________________
 Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| RockTheSchock 
 
 
 Anmeldungsdatum: 04.04.2007
 Beiträge: 138
 
 
 | 
			
				|  Verfasst am: 04.04.2013, 15:14    Titel: |   |  
				| 
 |  
				|  	  | ALWIM hat Folgendes geschrieben: |  	  | Habe es selber lösen können! Der Quellcode macht genau das was ich will.
 Vielleicht geht es noch besser, eleganter?
 
 | 
 
 Grundsätzlich würde ich dir Empfehlen Groß/- und Kleinschreibung zu nutzen, um gewisse Dinge besser zu unterscheiden. Außerdem solltest du gleich übersichtlich einrücken bzw. Blöcke bilden.
 
 Ein Schema könnte so aussehen:
 - Variablen komplett klein zu schreiben.
 - Funktionen/Subs und Type's bzw. Klassennamen mit einem großen Anfangsbuchstaben und eventuell weiteren in der Mitte
 - Keywords und Konstanten komplett groß
 
 
 
  	  | Code: |  	  | SCREENRES 640,320,32 
 RANDOMIZE TIMER
 DIM AS INTEGER r1, r2, i, k, rk
 
 k = 0
 rk = 0
 r1 = 0
 r2 = 3
 
 FOR i = 51 TO 72
 SELECT CASE k
 CASE 1,3
 r1 += 3: r2 += 3
 CASE 2
 r1 -= 1: r2 -= 1
 CASE 4
 IF rk > r1 AND rk < R2 THEN BEEP
 END SELECT
 
 LOCATE i + 1, 5: PRINT r1; " "; r2
 k += 1
 IF k > 4 THEN k = 1
 NEXT
 GETKEY
 END
 | 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| 28398 
 
 
 Anmeldungsdatum: 25.04.2008
 Beiträge: 1917
 
 
 | 
			
				|  Verfasst am: 11.04.2013, 12:44    Titel: |   |  
				| 
 |  
				| Variablennamen sollten nicht unbedingt nur aus ein oder zwei Buchstaben bestehen. Sowas findet eher Platz im IOCCC... |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		|  |