Omzetten van nummers naar text

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • nightriderron
  • Registratie: Juli 2003
  • Laatst online: 24-07 21:16
Puur uit interesse en nieuwsgierigheid heb ik visual studio 2013 community geïnstalleerd.
nu ben ik aan het proberen om door het invoeren van bepaalde nummers hierbij een code en text als uitvoer te krijgen.

de cijfers lopen op van 2,4,8,16,32 enz
door het invoeren van nummer 2 zou de uitkomst in 2 verschillende velden moeten zijn:
Z01-01 en de omschrijving van de code.

code:
1
2
3
If text = "2" Then Return "Z01-01"
If text = "4" Then Return "Z01-02"
If text = "8" Then Return "Z01-03"

code:
1
If text = "2" Then Return "omschrijving van de code"


de code loopt tot Z01-40, en ben ik kwa programmeren nog niet zo ver om hier iets simpels op te vinden
en misschien kan dat ook niet maar daarom vraag ik hier om wat hulp.
ook kan ik mijn voorstellen dat ik misschien wel helemaal verkeerd bezig ben maar ook dat hoor ik graag.

wil anders ook de complete code wel posten?.

groeten Ron

Acties:
  • 0 Henk 'm!

  • Shivs
  • Registratie: Januari 2010
  • Niet online
Je wil het logaritme (aantal machten van een bepaald getal) weten van de ingevoerde waarde. In praktisch alle programmeertalen heb je een functie hiervoor.

Bijvoorbeeld:
MSDN: Math.Log Method (System)

Door hiermee het logaritme van de ingevoerde waarde te achterhalen kan je daarmee je uitvoer weer bepalen.

Let er wel op dat je voor dergelijke functies moet rekenen met een getal, zorg er dus voor dat de ingevoerde waarde (variable) van het juiste type is voor het gebruik in de functie.

[ Voor 19% gewijzigd door Shivs op 20-05-2015 13:07 ]


Acties:
  • 0 Henk 'm!

  • Ryan_
  • Registratie: Februari 2009
  • Nu online
Visual Basic:
1
2
3
4
5
6
If Text.Text = "2" Then

z.Text = "Z01-01" 
Omschrijving.Text = "omschrijving van 2"

End If


Zoiets?

Acties:
  • 0 Henk 'm!

  • nightriderron
  • Registratie: Juli 2003
  • Laatst online: 24-07 21:16
@ JelkeBart hier ga ik eens induiken thx

nu is er nog iets wat ik nog niet verteld heb, het invoeren van die 40 combinaties met uitkomst is werk maar is te doen.
Alleen nu kan het voorkomen dat er een code uit het systeem komt die 2 codes combineert
stel ik heb een code 549755846656 dan is dit z01-39 plus z01-15

ik ga in ieder geval alvast beginnen met de code te gebruiken van Ryan_ dit is makkelijker te kopiëren.

Acties:
  • 0 Henk 'm!

  • jark86
  • Registratie: December 2012
  • Laatst online: 08-08-2017
Allereerst een tip: creëer een class waarin je de bitwise flag, de naam en de beschrijving bij elkaar houdt, dit zal een hoop onduidelijkheid in je code schelen.

Om te kijken of de code 549755846656 een flag bevat kun je de And operator gebruiken in Visual Basic .Net.

Gecombineerd zou je dus een class zoals deze kunnen gebruiken:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Public Class NumberMapping
    Private _flag As Long
    Private _name As String

    Public Property Flag() As Long
        Get
            Return _flag
        End Get
        Private Set
            _flag = Value
        End Set
    End Property

    Public Property Name() As String
        Get
            Return _name
        End Get
        Private Set
            _name = Value
        End Set
    End Property        

    Public Sub New(nr As Integer)
        Flag = CLng(Math.Pow(2, nr))
        Name = String.Format("Z01-{0:D2}", nr)
    End Sub

    Public Function IsMatch(number As Long) As Boolean
        Return (number And Flag) = Flag
    End Function
End Class


Dan kun je zoiets doen:
Visual Basic .NET:
1
2
3
4
5
6
Dim numberMapping As New NumberMapping(15)      
If numberMapping.IsMatch(549755846656L) Then            
    Console.WriteLine("A match")
Else
    Console.WriteLine("No match")
End If  


Dit gaat er natuurlijk van uit dat je nummers een duidelijk patroon volgen :)

Verder zou ik de class instanties ergens opslaan als een lijst, zodat je erdoorheen kan loopen om te zien wat matcht.

Acties:
  • 0 Henk 'm!

  • nightriderron
  • Registratie: Juli 2003
  • Laatst online: 24-07 21:16
allereerst bedankt voor de reacties, Jark86 ik zou willen vragen of jij mij eens zou willen helpen aan een voorbeeld?
Helaas gaat dit misschien nog iets te ver voor mij maar ziet er erg interessant uit.
maar snap het nog niet helemaal hoe de uitwerking hiervan resulteert in 2 textboxen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17:02

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
farlane schreef op vrijdag 22 mei 2015 @ 18:04:
[...]


Maar geen SetFlag/ResetFlag -O-
:?

C#:
1
2
3
4
5
//"SetFlag"
myval |= MyEnum.Green;

//"ClearFlag" / "UnsetFlag" / "ResetFlag"
myval &= ~MyEnum.Green;


https://dotnetfiddle.net/DN9D6y

En als je dat niet mooi vindt maak je er een extension method van ofzo :P (Hoewel daar wat haakjes en oogjes aan zitten m.b.t. generic constraints en enums :+ Als je maar 1 (of een handvol) enums hebt kun je 't beter per 'type' enum doen of je moet genoegen nemen met 't feit dat je ook 7.SetFlag(14) kunt doen :X ).

[ Voor 26% gewijzigd door RobIII op 22-05-2015 18:53 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Henk007
  • Registratie: December 2003
  • Laatst online: 06-04 00:29
Het is lang geleden dat ik heb geprogrammeerd, maar het goedkoopste algoritme in dit geval lijkt me een bitshift (<<) loopje van de 64 bit integer uit de input, waarbij je afhankelijk van de waarde van de bits je string toekent aan de outputvariabele. Best mogelijk dat de HasFlag code ook compileert naar iets dergelijks.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Henk007 schreef op vrijdag 22 mei 2015 @ 18:41:
Het is lang geleden dat ik heb geprogrammeerd, maar het goedkoopste algoritme in dit geval lijkt me een bitshift loopje van de 64 bit integer uit de input [...] Best mogelijk dat de HasFlag code ook compileert naar iets dergelijks.
Waarom een loop (voor een HasFlag that is...)?

Met basic bitwise operaties kom je er ook hoor ;) (ALS je er al voor kiest moeilijk te doen en geen enum te gebruiken).

Als je alle ge-set-te values wil hebben (in mijn voorbeeld fiddles bijvoorbeeld "Red, Blue" i.p.v."5") dan is een loopje wel handig ja (again: ALS je er al voor kiest moeilijk te doen en geen enum te gebruiken).

Maar ik zie niet waarom je niet gewoon een enum zou gebruiken en moeilijk zou gaan lopen doen terwijl de functionaliteit er al is en voor je gebouwd is en het je ook nog eens compile-time helpt fouten te ontdekken voordat 't te laat is ;)

[ Voor 47% gewijzigd door RobIII op 22-05-2015 18:54 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Gezien het feit dat je 40 opeenvolgende "flags" hebt, met geen bijzondere symbolische betekenis, is een loop wel zou duidelijk.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17:02
RobIII schreef op vrijdag 22 mei 2015 @ 18:25:
[...]

C#:
1
2
3
4
5
//"SetFlag"
myval |= MyEnum.Green;

//"ClearFlag" / "UnsetFlag" / "ResetFlag"
myval &= ~MyEnum.Green;
Mijn punt was eigenlijk : waarom wel een test definieren maar niet een Set/Reset? Als ik de Set/Reset met bitwise stuff moet doen, kan ik net zo goed de test ook op die manier doen, wel zo orthogonaal.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1