Omzetten naar een ander talstelsel

Hier is een oplossing voor het omzetten naar binair van niet-negatieve getallen:

Geen Afbeelding

Als een getal met één cijfer kan worden weergegeven, gebruiken we het als basisgeval. Bij binaire getallen zijn er maar 2 getallen die met één cijfer kunnen worden weergegeven, 0 en 1. Dus we testen of een getal kleiner is dan 2. Als dat zo is rapporteren we het getal.

Het is misschien verrassend dat we geen wiskundige combineerfunctie gebruiken, dat is omdat het gewenste resultaat een stukje tekst van getallen is. Dit is waarom de combineerfunctie voor tekst gebruikt wordt.
In het recursieve geval is het meest rechtse binaire cijfer de rest wanneer we het getal door 2 delen. Neem als voorbeeld 7, in binair is dit 111, het meest rechtse binaire cijfer is dus 1. We kunnen 7 3x door 2 delen, we houden dan nog 1 over, de rest is dus 1. Je kan deze techniek blijven herhalen met het resultaat van de breuk. Dat is in dit voorbeeld 3, 3 delen door 2 geeft 1 en als rest ook 1. 1 delen door 2 geeft 0 en als rest 1. Het antwoordt is dus 111. De combineerfunctie die we gebruiken voor de recursieve aanroep is voeg samen omdat we de cijfers samen willen voegen tot een woord.

  1. Schrijf een talstelsel7blok, dat het getal weergeeft in het talstelsel van 7.
    Geen Afbeelding
  2. Generaliseer dit blok met een talstelselblok dat het talstelsel neemt als tweede invoer:
    Geen Afbeelding Geen Afbeelding
    Geen Afbeelding Geen Afbeelding
  3. Snap! zal het getal in decimaal laten zien, maar jij gaat het omzetten naar een getal, niet een woord dat bestaat uit cijfers.
    Schrijf de omgekeerde functie van talstelsel dat een stuk tekst en een talstelsel als invoer neemt en daarna het bijbehorende getal rapporteert.
    Geen Afbeelding
    Voor het talstelsel van 12 tel je bijvoorbeeld zo: 1, 2, ..., 9, a, b, 10, 11, ..., 19, 1a, 1b, 20, etc. a12 is dus 1010, b12 is 1110 en 1012 is 1210.
  1. Verbeter het talstelselblok zodat het tot het talstelsel van 36 werkt door de letters a-z te gebruiken voor de getallen 10-35.
    Geen Afbeelding Geen Afbeelding
  2. Verbeter het van talstelselblok op dezelfde manier.
Terug Volgende