BPS #23: Nummernsuche - Auswertung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Xeres

Moderator

Betreff: BPS #23: Nummernsuche - Auswertung

BeitragSo, Aug 19, 2012 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Viele Zahlen - wer hat sie gemeistert?

Das war die Aufgabe

Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern.

Diskussion
Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen.

Nächste Aufgabe
In einer Woche wird die Musterlösung nach editiert und in 2 die nächste Aufgabe eingestellt.

Viel Spaß & viel Erfolg!

Musterlösung:
BlitzBasic: [AUSKLAPPEN]
SeedRnd(0)
; Zahlen Erzeugen:
Const count%=1000
Local Zahl%[count], i%
For i =0 To count
Zahl[i]=Rand(1,1000000)
Next

; Sortieren (Bubble Sort):
Local j,k, tmp
For j =0 To count
For k =0 To count
If Zahl[j] < Zahl[k] Then
tmp=Zahl[j]
Zahl[j]=Zahl[k]
Zahl[k]=tmp
EndIf
Next
Next

;Find the Number:
;815621 ;6493 ;8000 = Y,Y,N
Local number%=8000 ;* Die zu findende Zahl
Local val%=count*.5 ;* Startposition ist die Häfte des Arrays
Local pos%=val ;* Position setzen
Local oldpos%, nr% ;* Veränderung feststellen, Versuche Zählen

Repeat
nr=nr+1 ;* Neuer Rechenschritt
Print(nr + ") Zahl[" + pos + "] = " + Zahl[pos])

oldpos=pos ;* Alte Position merken
val=val*.5 ;* Hälfte des Ürsprünglichen Arrayteils
If Zahl[pos] = number Then
;* Nummer gefunden!
Print(number+" enthalten!")
WaitKey()
End
ElseIf Zahl[pos] < number Then
;* Verschiebe die Position in die eine...
pos = pos + val
Else
;* ...oder andere Richtung.
pos = pos - val
EndIf

Until oldpos=pos ;* val ist so klein, dass keine Änderung mehr statt findet.

Print("Keine "+number+" hier!")
WaitKey()
End
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group