van ternair naar octaal

Status
Niet open voor verdere reacties.
Klinkt als huiswerk:o
Wat heb je zelf al gedaan om dit voor elkaar te krijgen?
Waarom VBA, kan toch gewoon in Excel

Ron
 
ik heb een vak gemaakt waarin met behulp van een knop en len de lengte wordt geteld?!?
 
mid selecteren en F1 drukken; de help is vrij goed in VBA

maar waar ben je mee bezig. Ternair naar Octaal gaat over rekenen met getallen. Len en mid zijn functies voor tekst.

Ron
 
nee

ga maar na, hoe lang is een getal, hoe doe je het met cijfers achter de komma.

Ron
 
Tsja, als je niet in gaten hebben wat de bedoeling van dit forum is dan vraag ik me af waarom jij erop zit. Ik zit er zelf op om mensen te helpen. Voorwaarde is dan wel dat de vraag duidelijk is en dat er een heldere probleemstelling is. Je vraag was duidelijk maar je probleem niet en op vervolg vragen kwam geen duidelijk antwoord.

Het lijkt heel erg op huiswerk en dat doen we hier niet voor jou. Lees deze eens zodat je weet wat we dan wel doen.

Als jij met een duidelijke probleem komt, duidelijk laat zien wat je al gedaan hebt en duidelijk maakt wat je niet snapt en waar je vastloopt dan komen we in actie.

Ron
 
We mogen vragen over ons huiswerk stellen, we vragen hoe je een ternair getal in een octaal getal omzet. Dit is wat we hebben:

Private Sub Form_Current()

End Sub

Private Sub Knop0_Click()
lengte = Len(Invoer)
MsgBox (lengte)
End Sub

Zo moesten we beginnen volgens onze leraar.
Het probleem is dan toch duidelijk.
Hoe moeten we verder gaan?
 
Aangezien VBA de functie OCT kent die een decimaal getal omzet naar een octaal getal moeten we ons concentreren op het omzetten van een ternair getal naar een decimaal getal. Zoals jullie ongetwijfeld weten is een ternair getal een BASE3 getal (0, 1, 2) maw er wordt voor de omzetting gerekend met machten van 3.
Wat hebben we nodig :
1. de lengte van het getal >> LEN
2. een functie die elk element aanduidt in het getal >> MID
3. een lus die elk element gebruikt >> FOR ..... NEXT lus
Als voorbeeld nemen we 2221020 wat volledig uitgeschreven wordt
2*(3^6) + 2*(3^5) + 2*(3^4) + 1*(3^3) + 0*(3^2) + 2*3 + 0*1
1.adhv de lengte kunnen we de hoogste macht berekenen die we nodig hebben nl Len(getal)-1 en we gaan deze in een variabele n gieten
2.De lus maken we met For i = 1 to Len(getal) om alle elementen te gebruiken.
3.Het element dat we gebruiken duiden we aan met Mid(getal,i,1)
4.Bij elke doortocht v/d lus verkleinen we de macht met 1 dus n = n - 1
5.Schrijf het resultaat naar een cel of besturingselement
De opbouw v/d macro is dus als volgt

Sub Ter2Oct()
Bepaal de hoogste macht zie 1
Bepaal het aantal lussen zie 2
Steek het uiteindelijke resultaat in een variabele bv. dec = dec + berekening v/d elementen zie 3
Verminder de macht met 1 zie 4
Neem het volgende element Next
Zet om naar octaal en schrijf het resultaat weg zie 5
End Sub
 
Laatst bewerkt:
Als bewijs dat het wel degelijk werkt. Uiteraard is het VBA-project vergrendeld aangezien het om schoolwerk gaat ik van jou ook wat input verwacht !
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan