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

Gehe zu Seite Zurück 1, 2, 3, 4
Sound |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, dann meine verspätete und dank Rallimen zustandegekommene Lösung (THX dafür!)
Code: [AUSKLAPPEN] Graphics 800,600 Dim zahlstring$(1) Repeat Cls Text 0,0,"(1) Binär->Dezimal" Text 0,15,"(2) Binär->Hexadezimal" Text 0,30,"(3) Dezimal->Binär" Text 0,45,"(4) Dezimal->Hexadezimal" Text 0,60,"(5) Hexadezimal->Binär" Text 0,75,"(6) Hexadezimal->Dezimal" Text 0,90,"(0) Ende" Locate 0,105 menu=WaitKey()-48 Select menu Case 1 zahl$=Input("Binärzahl: ") If valid(zahl$,2)=True Then Text 0,120,"Dezimalzahl: "+toDezimal(zahl$,2) Else Text 0,120,"Keine Binärzahl!" EndIf Case 2 zahl$=Input("Binärzahl: ") If valid(zahl$,2)=True Then Text 0,120,"Hexadezimalzahl: "+fromDezimal(toDezimal(zahl$,2),16) Else Text 0,120,"Keine Binärzahl!" EndIf Case 3 zahl$=Input("Dezimalzahl: ") If valid(zahl$,10)=True Then Text 0,120,"Binärzahl: "+fromDezimal(zahl,2) Else Text 0,120,"Keine Dezimalzahl" EndIf Case 4 zahl$=Input("Dezimalzahl: ") If valid(zahl$,10)=True Then Text 0,120,"Hexadezimalzahl: "+fromDezimal(zahl,16) Else Text 0,120,"Keine Dezimalzahl!" EndIf Case 5 zahl$=Input("Hexadezimalzahl: ") If valid(zahl$,16)=True Then Text 0,120,"Binärzahl: "+fromDezimal(toDezimal(zahl$,16),2) Else Text 0,120,"Keine Hexadezimalzahl!" EndIf Case 6 zahl$=Input("Hexadezimalzahl: ") If valid(zahl$,16)=True Then Text 0,120,"Dezimalzahl: "+toDezimal(zahl$,16) Else Text 0,120,"Keine Hexadezimalzahl" EndIf Case 0 Exit End Select WaitKey() Forever 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 Function toDezimal(zahl$,modus) Dim zahlstring$(Len(zahl$)-1) For i=0 To Len(zahl$)-1 zahlstring$(i)=Mid(zahl$,i+1,1) Next dezimal=0 For i=0 To (Len(zahl$)-1) ziffer_str$=zahlstring$(Len(zahl$)-1-i) If (Asc(ziffer_str$)>47) And (Asc(ziffer_str$)<58) Then ziffer=ziffer_str$ Else ziffer=Asc(Upper(ziffer_str$))-55 EndIf dezimal=dezimal+(ziffer*modus^i) Next Return dezimal End Function ;toDezimal Function fromDezimal$ (zahl,modus) i = 0 Repeat start = modus^i i = i + 1 Until start > zahl nonDezimal$ = "" i=i-2 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" ElseIf ziffer<10 Then nonDezimal$ = nonDezimal$+ziffer Else nonDezimal$=nonDezimal$+Chr(ziffer+55) EndIf Next Return nonDezimal End Function ;fromDezimal Dim zahlstring$(0) End |
||
Gehe zu Seite Zurück 1, 2, 3, 4
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group