tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
724
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ray Ray ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Guten Tag,

    ich lerne seit kurzem VBA und habe Probleme bei einer Aufgabe:

    Es soll ein VB – Programm erstellt werden, mit dem eine einzugebende, positive Dezimalzahl in die zugehörige Oktalzahl umgewandelt werden kann.
    Im Oktalsystem werden Zahlen zur Basis 8 dargestellt, der Zeichenvorrat besteht aus den acht Ziffern 0, 1, 2, 3, 4, 5, 6, 7
    Der Umwandlungsalgorithmus wird im folgenden Beispiel anhand der Dezimalzahl 5432 dargestellt:
    Dezimalzahl: 5432 : 8 = 679 Rest 0
    679 : 8 = 84 Rest 7
    84 : 8 = 10 Rest 4
    10 : 8 = 1 Rest 2
    1 : 8 = 0 Rest 1 Oktalzahl: 12470

    Verwendet werden dürfen ausser Typumwandlungsfunktionen keine VB Standardfunktionen. Operatoren sind natürlich erlaubt (Mod)

    Ich hab ewig dran rumprobiert, bekomme es aber einfach nicht hin. Mein Problem ist, dass die Zahlen ersten falsch herum rauskommen und zweitens eine null zuviel dran hängt.

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    Dim xneu As Long
    Dim xalt As Long
    Dim y As Long
    Dim z As Long
     
    xneu = txtEingabe
     
    Do
     
    xalt = xneu \ 8
    y = xneu Mod 8
    z = xalt Mod 8
    xneu = xalt \ 8
     
     
    lblAusgabe = lblAusgabe & y & z
     
    Loop Until xalt = 0

    Ich erwarte nicht, dass mir hier jemand meine Hausaufgaben macht. Jedoch würde ich mich über die ein oder andere Hilfestellung oder Korrektur sehr freuen.
    Geändert von Ray (27.11.10 um 00:20 Uhr)
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Das falsch herum:
    In deinem Beispiel beginnst du mit der letzten Ziffer und endest bei der vordersten. Also diese Reihenfolge:
    [5][4][3][2][1]

    Aber du setzt jetzt die neusten Ziffern zuhinterst an. Dadurch ergibt sich automatisch [1][2][3][4][5]

    Warum rechnest du pro durchgag 2 mal /8?

    Code vb:
    1
    2
    3
    4
    5
    6
    
    x = eingabe
    do
      digit = x mod 8
      x = x \ 8
      ausgabe = digit & ausgabe
    loop until x=0
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Ray Ray ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Vielen Dank für die Hilfe.
    Hab mal wieder zu kompliziert gedacht. Da probiert man ewig rum und sieht den Wald vor lauter Bäumen nicht mehr und dann ist die Lösung so einfach. Naja ich lerne seit etwa einem Monat VBA und hab bei Algorithmen noch ein wenig Verständnisprobleme.
    Ich dachte ich müsste zwei Variabeln erstellen, die sich gegenseitig überschreiben damit die Schleife läuft. Aus Fehlern lernt man.

    Grüße

    Ray
     

Ähnliche Themen

  1. Handelt es sich um eine Dezimalzahl?
    Von ScarabXX im Forum PHP
    Antworten: 2
    Letzter Beitrag: 10.09.08, 08:54
  2. Antworten: 2
    Letzter Beitrag: 27.07.06, 10:54
  3. VB 6.0 Aufrunden einer Dezimalzahl
    Von Nichtwisser im Forum Visual Basic 6.0
    Antworten: 5
    Letzter Beitrag: 12.01.06, 16:45
  4. Hilfe, brauche dringenst eine Umwandlung!
    Von der nick im Forum Vektor-Programme
    Antworten: 6
    Letzter Beitrag: 16.04.05, 15:40
  5. Eine Frage des Algorithmus :)
    Von Create im Forum PHP
    Antworten: 4
    Letzter Beitrag: 07.05.02, 22:10

Stichworte