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

Gehe zu Seite Zurück 1, 2, 3, 4 Weiter
![]() |
ssj-goku |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmmm wenn das fuer anfänger ist dann siehts fuer mich schwarz aus ![]() ![]() cu |
||
azureuz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ssj-goku hat Folgendes geschrieben: hmmm wenn das fuer anfänger ist dann siehts fuer mich schwarz aus
![]() ![]() cu seh ich auch so. die aufgaben sind bestimmt nicht für anfänger! |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
hex nach Binär und umgekeht ist relativ einfach zu lösen!
bei dezimal muß schon gerechnet werden! |
||
[BB2D | BB3D | BB+]
|
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Nö, is immer das selbe! ![]() Es sollen ja KEINE Gleitkommazahlen unterstützt werden soweit ich verstanden habe. Hier meine Executable: hier @Rallimen: F00000 = 15728640 F000000 = 251658240 Bei mir gehts korrekt! Seltsam das es bei dir nicht klappt, der Rest ist doch korrekt oder? grüße |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
David:
was stimmt denn daran nicht? ![]() Bei mir kannst du das nur nicht eingeben ! Habe da eine Ziffer zuviel gekürzt bei der Sicherungsabfragen, kannste nur 6 Stellen eingeben! und Bei binär nach hex und umgekeht kannste das rechnen völlig ausser acht lassen und in riesiege dimensionen wandern! |
||
[BB2D | BB3D | BB+]
|
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Rallimen hat Folgendes geschrieben: Das ergebnis stimmt dann nicht richtig! mit hex ist es noch schlimmer! $F00000 = 15* 16^6 = 2.51658e+008 = 251658000 richtig ist aber 251658240 ![]() ich könnte natürlich die Rechnungen noch selber coden damit ich nicht in wissenschaftlicher notation rechnen muß, aber die Zeit habe ich jetzt nicht! Und die Lust läßt auch zu wünschen.... Dachte du hättest noch Probleme damit. ![]() grüße |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
habe die Bregenzung extrem gelockert,
geht jetzt bis $1FFFFFFFFFFFFFFFFFFF außer dezimal, da gibt Abstriche! |
||
[BB2D | BB3D | BB+]
|
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Ja, bei mir gehts jetzt auch bis in größere Zahlen, da ich nun zwei Funktionen extra für Bin <-> Hex Umwandlung geschrieben habe. Bei Dezimalzahlen verwende ich als Ausgabetyp "Integer" von daher gibts bei Werten, größer als 7FFFFFFF dann falsche Werte. grüße |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe nochmal eine Exe mit meinen
StandartRechnenFunktionen ( + - / * ) nicht optimiert und saulahm) erstellt! http://people.freenet.de/rallimen/Basic/ Eingebaute Begrenzung liegt bei 99999999999999999999999999 (26 Stellen dezimal ) ca 80 -90 Bit was schon ca 2 Sekunden Rechenzeit erfordert mit BlitzPlus! aber schaut selbst! Zeiten werden unten eingeblendet! Grüße |
||
[BB2D | BB3D | BB+]
|
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Nett, ich habs bei 32 Bit Ganzahlen gelassen für Dezimale. So, nun postet alle eure Lösungen, es ist Donnerstag! ![]() grüße |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Richtig, lasst mal sehen. Sehr schön, dass ihr so gut dabei seid. | ||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Ok, dann fang ich mit meiner Lösung an: Code: [AUSKLAPPEN] Graphics 800, 600, 32, 2 ; Konstanten Const tbl$ = "0123456789ABCDEF" Const binTbl$ = "0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111" ; Hauptprogramm val$ = Input( "Geben Sie eine Zahl ein: " ) Print "1) Dez -> Bin/Hex" Print "2) Hex -> Dez/Bin" Print "3) Bin -> Dez/Hex" Repeat Sys$ = Input( "Geben Sie das System an wie umgerechnet werden soll: " ) Until Int( Sys$ ) >= 1 And Int( Sys$ ) <= 3 Print "" Select Int( Sys$ ) Case 1 If ( CheckValidDec( val$ ) ) Print "Bin: " + DecToBin$( val$ ) Print "Hex: " + DecToHex$( val$ ) Else Print "Keine gueltige Dezimalzahl" End If Case 2 If ( CheckValidHex( val$ ) ) Print "Dez: " + HexToDec%( val$ ) ;Print "Bin: " + DecToBin$( HexToDec%( val$ ) ) Print "Bin: " + HexToBin( val$ ) Else Print "Keine gueltige Hexadezimalzahl" End If Case 3 If ( CheckValidBin( val$ ) ) Print "Dez: " + BinToDec%( val$ ) ;Print "Hex: " + DecToHex$( BinToDec%( val$ ) ) Print "Hex: " + BinToHex$( val$ ) Else Print "Keine gueltige Binaerzahl" End If End Select WaitKey End ; =================== ; ; CheckValidHex() ; Function CheckValidHex( val$ ) For i% = 1 To Len( val$ ) c$ = Mid( val$, i, 1 ) If ( Not Instr( tbl$, Upper( c$ ) ) ) Return False Next Return True End Function ; =================== ; ; CheckValidDec() ; Function CheckValidDec( val$ ) For i% = 1 To Len( val$ ) c$ = Mid( val$, i, 1 ) If ( c$ < "0" Or c$ > "9" ) Return False Next Return True End Function ; =================== ; ; CheckValidBin() ; Function CheckValidBin( val$ ) For i% = 1 To Len( val$ ) c$ = Mid( val$, i, 1 ) If ( c$ < "0" Or c$ > "1" ) Return False Next Return True End Function ; =================== ; ; DecToX() ; Function DecToN$( val%, base% ) res$ = "" tmp% = val% While tmp% > 0 res$ = Mid( tbl$, ( tmp% Mod base% + 1 ), 1 ) + res$ tmp% = tmp% / base% Wend Return res$ End Function ; =================== ; ; XToDec() ; Function NToDec%( val$, base% ) res% = 0 For i% = 1 To Len( val$ ) res% = res% * base% + Instr( tbl$, Upper( Mid( val$, i, 1 ) ) ) - 1 Next Return res% End Function ; =================== ; ; DecToHex() ; Function DecToHex$( val% ) Return DecToN( val%, 16 ) End Function ; =================== ; ; DecToBin() ; Function DecToBin$( val% ) Return DecToN( val%, 2 ) End Function ; =================== ; ; BinToDec() ; Function BinToDec%( val$ ) Return NToDec( val$, 2 ) End Function ; =================== ; ; HexToDec() ; Function HexToDec%( val$ ) Return NToDec( val$, 16 ) End Function ; =================== ; ; HexToBin() ; Function HexToBin$( val$ ) res$ = "" For i% = 1 To Len( val$ ) res$ = res$ + Mid$( binTbl$, ( Instr( tbl$, Upper( Mid( val$, i, 1 ) ) ) * 5 ) - 4, 4 ) Next Return res$ End Function ; =================== ; ; BinToHex() ; Function BinToHex$( val$ ) value$ = val$ res$ = "" While ( Len( value$ ) Mod 4 ) value$ = "0" + value$ Wend For i% = 1 To Len( val$ ) Step 4 res$ = res$ + Mid$( tbl$, ( Instr( binTbl$, Mid$( value$, i, 4 ) ) / 5 ) + 1, 1 ) Next Return res$ End Function grüße |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Respekt David,
auf die Idee bin ich garnicht gekommen! Code: [AUSKLAPPEN] Global Win1
Global TextFieldDez Global TextFieldHex Global TextFieldBin Const MAXDEZ = 10 Const MAXHEX = 20 Const MAXBIN = 78 CreateWin () ActivateGadget Win1 Repeat Ergebnis = WaitEvent () Select Ergebnis Case $803 End Case $401 Select EventSource () Case TextFieldDez Checkdez (TextFieldDez) SetGadgetText (TextFieldHex,DezHex (TextFieldText (TextFieldDez) ) ) SetGadgetText (TextFieldBin,dezbin (TextFieldText (TextFieldDez) ) ) Case TextFieldHex CheckHex (TextFieldHex) SetGadgetText (TextFieldDez,hexdez (TextFieldText (TextFieldHex) ) ) SetGadgetText (TextFieldBin,hexbin (TextFieldText (TextFieldHex) ) ) Case TextFieldBin CheckBin (TextFieldBin) SetGadgetText (TextFieldDez,Bindez (TextFieldText (TextFieldBin) ) ) SetGadgetText (TextFieldHex,binhex (TextFieldText (TextFieldBin) ) ) End Select Default End Select Forever Function CreateWin () Win1 = CreateWindow ("Dez<>Bin<>Hex (c)Rallimen v1.0",212,167,780,110,Desktop () ,1) TextFieldDez = CreateTextField (10 ,40,100,20,Win1,0) SetGadgetText TextFieldDez,"" SetGadgetLayout TextFieldDez,1,0,1,0 TextFieldHex = CreateTextField (130 ,40,140,20,Win1,0) SetGadgetText TextFieldHex,"" SetGadgetLayout TextFieldHex,1,0,1,0 TextFieldBin = CreateTextField (290 ,40,470,20,Win1,0) SetGadgetText TextFieldBin,"" SetGadgetLayout TextFieldBin,1,0,1,0 Label1 = CreateLabel ("Dezimal",40,16,60,20,Win1,0) SetGadgetLayout Label1,1,0,1,0 Label2 = CreateLabel ("Hexadezimal",150,19,60,20,Win1,0) SetGadgetLayout Label2,1,0,1,0 Label3 = CreateLabel ("Binär",350,20,60,20,Win1,0) SetGadgetLayout Label3,1,0,1,0 End Function Function CheckDez$ (Textzeile) Local Ausgabe$ Zahlen$ = TextFieldText (Textzeile) zeichen = Len (Zahlen$) While x < zeichen x = x + 1 dummy$ = Mid (Zahlen$,x,1) If x = MAXDEZ Then Exit Select dummy$ Case "0" If x <> 1 Then Ausgabe$ = Ausgabe$ + dummy Case "1","2","3","4","5","6","7","8","9" Ausgabe$ = Ausgabe$ + dummy End Select Wend SetGadgetText Textzeile,Ausgabe$ End Function Function CheckHex$ (Textzeile) Zahlen$ = Upper (TextFieldText (Textzeile) ) zeichen = Len (Zahlen$) While x < zeichen x = x + 1 dummy$ = Mid (Zahlen$,x,1) If x = MAXHEX Then Exit Select dummy$ Case "0" If x <> 1 Then Ausgabe$ = Ausgabe$ + dummy Case "1","2","3","4","5","6","7","8","9","A","B","C","D","E","F" Ausgabe$ = Ausgabe$ + dummy End Select Wend SetGadgetText Textzeile,Ausgabe$ End Function Function CheckBin$ (Textzeile) Zahlen$ = TextFieldText (Textzeile) zeichen = Len (Zahlen$) While x < zeichen x = x + 1 dummy$ = Mid (Zahlen$,x,1) If x = MAXBIN Then Exit Select dummy$ Case "0" If x <> 1 Then Ausgabe$ = Ausgabe$ + dummy Case "1" Ausgabe$ = Ausgabe$ + dummy End Select Wend SetGadgetText Textzeile,Ausgabe$ End Function Function DezBin$ (Wert%) Local dummy$ Repeat X = X + 1 If 2 ^ (x - 1) => wert Then For i = x - 1 To 0 Step - 1 If wert - 2 ^ (i) < 0 Then dummy$ = dummy$ + "0" Else dummy$ = dummy$ + "1" wert = wert - 2 ^ (i) End If Next While Left (dummy,1) = "0" dummy = Mid (dummy,2) Wend Return dummy EndIf Forever End Function Function DezHex$ (Wert%) Local dummy$,dd%,x%,Vkomma% Repeat X = X + 1 dd = 16 ^ (x) If dd < 0 Then Return "error.." If dd => wert Then ; größe gefunden For i = x - 1 To 0 Step - 1 dd = 16 ^ (i) Vkomma = Floor (wert / dd) Select Vkomma Case 0 : Dummy = dummy + "0" Case 1 : Dummy = dummy + "1" Case 2 : Dummy = dummy + "2" Case 3 : Dummy = dummy + "3" Case 4 : Dummy = dummy + "4" Case 5 : Dummy = dummy + "5" Case 6 : Dummy = dummy + "6" Case 7 : Dummy = dummy + "7" Case 8 : Dummy = dummy + "8" Case 9 : Dummy = dummy + "9" Case 10 : Dummy = dummy + "A" Case 11 : Dummy = dummy + "B" Case 12 : Dummy = dummy + "C" Case 13 : Dummy = dummy + "D" Case 14 : Dummy = dummy + "E" Case 15 : Dummy = dummy + "F" Case 16 : Dummy = dummy + "10" Default Stop End Select wert = wert - Vkomma * 16 ^i Next While Left (dummy,1) = "0" dummy = Mid (dummy,2) Wend Return Dummy EndIf Forever Return Dummy End Function Function BinDez$ (A$) For i = Len (a) To 1 Step - 1 If Mid (a,i,1) = "1" Then dummy% = dummy% + 2 ^ (x) If dummy < 0 Then Return "error.." x = x + 1 Next Return Dummy End Function Function HexDez$ (A$) For i = Len (a) To 1 Step - 1 wert$ = Upper (Mid (a,i,1) ) Select wert$ Case "0","1","2","3","4","5","6","7","8","9" Ziffer% = wert$ dummy% = dummy% + ziffer * 16 ^x If dummy < 0 Then Return "error.." Case "A", "B" ,"C","D","E","F" ;10 faktor = Asc (wert$) - 55 dummy% = dummy% + faktor * 16 ^x If dummy < 0 Then Return "error.." End Select x = x + 1 Next Return Dummy End Function Function BinHex$ (binZahl$) Local Dummy$ While Len (Binzahl$) Mod 4 <> 0 Binzahl$ = "0" + Binzahl$ Wend For x = 1 To Len (binZahl$) Step 4 wert$ = Mid (binZahl$,x,4) Select wert$ Case "0000" : Dummy = dummy + "0" Case "0001" : Dummy = dummy + "1" Case "0010" : Dummy = dummy + "2" Case "0011" : Dummy = dummy + "3" Case "0100" : Dummy = dummy + "4" Case "0101" : Dummy = dummy + "5" Case "0110" : Dummy = dummy + "6" Case "0111" : Dummy = dummy + "7" Case "1000" : Dummy = dummy + "8" Case "1001" : Dummy = dummy + "9" Case "1010" : Dummy = dummy + "A" Case "1011" : Dummy = dummy + "B" Case "1100" : Dummy = dummy + "C" Case "1101" : Dummy = dummy + "D" Case "1110" : Dummy = dummy + "E" Case "1111" : Dummy = dummy + "F" End Select Next While Left (dummy,1) = "0" dummy = Mid (dummy,2) Wend Return Dummy$ End Function Function HexBin$ (HexZahl$) Local Dummy$ For x = 1 To Len (HexZahl$) wert$ = Mid (HexZahl$,x,1) Select wert$ Case "0" : Dummy = dummy + "0000" Case "1" : Dummy = dummy + "0001" Case "2" : Dummy = dummy + "0010" Case "3" : Dummy = dummy + "0011" Case "4" : Dummy = dummy + "0100" Case "5" : Dummy = dummy + "0101" Case "6" : Dummy = dummy + "0110" Case "7" : Dummy = dummy + "0111" Case "8" : Dummy = dummy + "1000" Case "9" : Dummy = dummy + "1001" Case "A" : Dummy = dummy + "1010" Case "B" : Dummy = dummy + "1011" Case "C" : Dummy = dummy + "1100" Case "D" : Dummy = dummy + "1101" Case "E" : Dummy = dummy + "1110" Case "F" : Dummy = dummy + "1111" End Select Next While Left (dummy,1) = "0" dummy = Mid (dummy,2) Wend Return Dummy$ End Function |
||
[BB2D | BB3D | BB+]
|
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
juhu, meins ist das kürzeste ![]() Code: [AUSKLAPPEN] dz=255
Print dezTohex$(dz) Print dezTobin$(dz) hx$="FF" Print hextodez(hx$) Print hextobin(hx$) bn$="11111111" Print bintodez(bn$) Print bintohex(bn$) WaitKey End Function DezToHex$(dz) Repeat Select dz Mod 16 Case 0 hexz$="0"+hexz$ Case 1 hexz$="1"+hexz$ Case 2 hexz$="2"+hexz$ Case 3 hexz$="3"+hexz$ Case 4 hexz$="4"+hexz$ Case 5 hexz$="5"+hexz$ Case 6 hexz$="6"+hexz$ Case 7 hexz$="7"+hexz$ Case 8 hexz$="8"+hexz$ Case 9 hexz$="9"+hexz$ Case 10 hexz$="A"+hexz$ Case 11 hexz$="B"+hexz$ Case 12 hexz$="C"+hexz$ Case 13 hexz$="D"+hexz$ Case 14 hexz$="E"+hexz$ Case 15 hexz$="F"+hexz$ End Select dz=dz/16 Until dz<1 Return hexz$ End Function Function DezToBin$(dz) If dz<0 Then dz=-dz Repeat bz$=dz And 2^i dz=dz/2 binz$=Str$(bz$)+binz$ Until dz<1 Return binz$ End Function Function HexToDez(hexz$) If IsntHex(hexz$) Then RuntimeError("Falsche Benutzung der Funktion:hexz$<>Hex-Wert") For i=1 To Len(hexz$)^10 If DezToHex$(i)=hexz$ Then Return i Next End Function Function HexToBin$(hexz$) If IsntHex(hexz$) Then RuntimeError("Falsche Benutzung der Funktion:hexz$<>Hex-Wert") Return DezToBin(HexToDez(hexz$)) End Function Function BinToDez(binz$) If IsntBin(binz$) Then RuntimeError("Falsche Benutzung der Funktion:binz$<>Bin-Wert") dezz=2 For i=2 To Len(binz$) If Mid$(binz$,i,1)="1" Then dezz=dezz*2;+(2^(Len(binz$)-i)) Next Return dezz-1 End Function Function BinToHex$(binz$) If IsntBin(binz$) Then RuntimeError("Falsche Benutzung der Funktion:binz$<>Bin-Wert") dezz=1 For i=1 To Len(binz$) If Mid$(binz$,i,1)="1" Then dezz=dezz*2;+(2^(Len(binz$)-i)) Next Return DezToHex(dezz-1) End Function Function IsntHex(hexz$) For i=1 To Len( hexz$) fehler=1 Select Mid$(hexz$,i,1) Case "0" fehler=0 Case "1" fehler=0 Case "2" fehler=0 Case "3" fehler=0 Case "4" fehler=0 Case "5" fehler=0 Case "6" fehler=0 Case "7" fehler=0 Case "8" fehler=0 Case "9" fehler=0 Case "A" fehler=0 Case "B" fehler=0 Case "C" fehler=0 Case "D" fehler=0 Case "E" fehler=0 Case "F" fehler=0 End Select If fehler Then Return 1 Next Return 0 End Function Function IsntBin(binz$) For i=1 To Len(binz$) fehler=1 Select Mid$(binz$,i,1) Case "0" fehler=0 Case "1" fehler=0 End Select If fehler Then Return 1 Next Return 0 End Function |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
Sound |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich bin neu hie rund bei blitzBasic noch ein noob, aber ich muss dazu mal sagen:
Die Aufgabe ist auf keinen Fall zu schwierig. Ich denke, der Schwieirgkeitsgrad ist genau richtig gewählt. Man muss ja das aus dem mathematikunterricht bekannte Schema nur in Algorithmen verwandeln Also mein lösungsansatz geht davon aus, dass man zwei simple Functionen hat: Eine berechnet aus jedem Zahlensystem in Dezimalzahlen udn eine andere berechnet von Dezimalzahlen ausgehend in jedes beliebige Zahlensystem. Somit könnte man die Aufgabenstellung ohne weiteres erfüllen und es hätte noch den Vorteil, dass es flexibler ist. So, aber irgendwie funzt die Funktion, die von Dezimalzahlen ausgehend in andere umwandeln soll, nicht so richtig. Hier der Code Code: [AUSKLAPPEN] Function fromDezimal(zahl,modus) i=0 Repeat start=(modus-1)*(modus^i) i=i+1 Until start>zahl i=i-1 nonDezimal=0 For a=i To 0 Step -1 ziffer=Floor(zahl/(modus^a)) zahl=zahl-(ziffer*(modus^a)) nonDezimal=nonDezimal+(ziffer*10^a) Next Return nonDezimal End Function ;fromDezimal Tja, manchmal stimmts, manchmal aber auch nicht. Könnt ihr mir helfen? |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
@Kryan: Naja das kürzeste... Bei mir sind halt noch Kommentarzeilen über jeder Funktion usw... ![]() @Rallimen: Danke! ![]() @Sound: Die Codes sind schon fertige Lösungen die funktionieren sollten, heute war "release" Tag... ![]() Kannst dir ja die diversen Lösungen ansehen! grüße |
||
Sound |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
David hat Folgendes geschrieben: Hi!
@Sound: Die Codes sind schon fertige Lösungen die funktionieren sollten, heute war "release" Tag... ![]() Kannst dir ja die diversen Lösungen ansehen! grüße Ja, also das konnte ich schon lesen. Mein Lösungsansatz ist ja nun aber wesentlich anders, wie du sicherlich erkannt hast. Der prinzipielle Lösungsansatz ist simpel, deshalb interessierte mich dieser nicht so. Die Codes, die gepostet worden, sind mir auch klar. Aber ich wollte halt gerne wissen, warum mein Code nciht funzt, wie er es tun sollte. |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 800 ,600,16,2
Const hexdat$ = "0123456789abcdef" For t = 0 To 7 ZUfall = Rand (0 , $fffffff) Print RSet (Hex (ZUfall) ,35) + " BBVersion" Print RSet (fromDezimal (ZUfall,16) ,35) Print RSet (Bin (ZUfall) ,35) + " BBVersion" Print RSet (fromDezimal (ZUfall,2) ,35) Next Stop Function fromDezimal$ (zahl,modus) i = 0 Repeat start = modus^i i = i + 1 Until start > zahl nonDezimal$ = "" i = i - 1 For a = i To 0 Step - 1 ziffer = Floor (zahl / (modus^a) ) zahl = zahl - (ziffer * (modus^a) ) If Ziffer < 0 Then Return "Out of Range" nonDezimal$ = nonDezimal$ + Mid (hexdat$,ziffer + 1 ,1) Next Return nonDezimal End Function ;fromDezimal Schau es dir an jetzt geht es , die Änderungen sieht du ja Inclusive Test Hex Zahlen lassen sich nur als String ausgeben! Mit dieser Function lassen sich auch alle anderen Zähl-Syteme wie Oktal 8[/b] ausrechnen! Wenn die Konstante Hexdat$ noch verlängert wird.....geht auch mehr wie 16 |
||
[BB2D | BB3D | BB+]
|
Sound |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Rallimen: Thx, die Funktion funzt erstmal. Habe sie noch geändert. ich fand die Idee mit hexdat$ zwar sehr interessant, aber ich habe es bei der anderen Funktion bereits mit ASCII gelöst und wollte deshalb jetzt wieder darauf zurückgreifen(ausserdem hat man so ein unbegrenztes zahlensystem - Wer braucht denn nicht mal das 32er-Zahlensystem *fg* ![]() Ich wollte natürlich noch überprüfen, ob die Zahlen, die eingegeben werden, auch gültig sind. Wieder natürlich allgemein für alle Zahlensysteme: Code: [AUSKLAPPEN] Function valid(zahl$,modus) For i=0 To Len(zahl$)-1 asc_ziffer=Asc(Mid(zahl$,i+1,1)) If modus>10 Then If (asc_ziffer>47) And (asc_ziffer<(55+modus)) And ((asc_ziffer<58) Or (asc_ziffer>64)) Then Return True Else Return False EndIf Else If (asc_ziffer>47) And (asc_ziffer<(48+modus)) Then Return True Else Return False EndIf EndIf Next End Function ;valid Für die erste ziffer prüft er auch korrekt, allerdings für alle nachfolgenden nicht. Meine Test haben ergeben, dass bei i>=1 asc_ziffer immer 0 ist. Wieso? Thx schonmal ![]() |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
hier probier das mal!
Code: [AUSKLAPPEN] Function valid (zahl$,modus) zahl$ = Upper (zahl$) For i = 1 To Len (zahl$) asc_ziffer% = Asc (Mid (zahl,i,1) ) If Modus <= 10 Then If asc_ziffer% < 48 Or asc_ziffer% => 48 + Modus Then Return False Else If asc_ziffer% < 48 Or asc_ziffer% => 65 + Modus - 10 Then Return False If asc_ziffer% > 57 And asc_ziffer% < 65 Then Return False EndIf Next Return True End Function ;valid |
||
[BB2D | BB3D | BB+]
|
Gehe zu Seite Zurück 1, 2, 3, 4 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group