/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Niveauer - måske OT
Fra : Jens Vestergaard


Dato : 21-04-05 15:37

Hejsa,
Det er måske mere "grundlæggende programmering/matematisk forståelse", end
det er VB - men løsningen skal laves i VB, så jeg vover det ene øje.

Fakta:
Jeg har en gruppe mennesker, som kan inddeles i fire kategorier: kat1-kat4
Indenfor hver kategori kan en person have fire niveauer: niv-niv4

For eksempel:
A. Hansen ligger i kat3, hvor han er på niv2 og niv3 - og i kat4, hvor han
er på niv1 og niv3
N. Jensen ligger i kat1, hvor han er på niv4
J. Olsen findes i samtlige kategorier på samtlige niveauer

Problem:
Kan jeg med en enket unik værdi udtrykke personernes placering. Læg mærke
til, at hver enkelt person kan ligge i 1, 2 3 eller 4 kategorier og i hver
kategori på 1, 2 3, eller 4 niveauer. Alle kombinationer er altså mulige.

Jeg skal kunne "regne" både forlæns og baglæns.


--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp




 
 
Tomas Christiansen (21-04-2005)
Kommentar
Fra : Tomas Christiansen


Dato : 21-04-05 15:59

Jens Vestergaard skrev:
> Jeg har en gruppe mennesker, som kan inddeles i fire kategorier:
> kat1-kat4 Indenfor hver kategori kan en person have fire niveauer:
> niv-niv4
....
> Kan jeg med en enket unik værdi udtrykke personernes placering.

Hvis både betydning og antal af kategorier og betydning og antal af
niveauer aldrig ændrer sig, kan du bruge enhver datatype, som kan opdeles
i 4*4=16 enkeltdele, som skal kunne tilgås uafhængig af hinanden.

En Long vil kunne bruges, da der er 32 bit at gøre godt med. Den 1. bit
kan svare til kat1,niv1, den 2. bit kan svare til kat1,niv2, ... den 16.
bit kan svare til kat4,niv4. Værdien 1 kan repræsentere medlemskab og 0
kan repræsentere ikke-medlemskab. Et check på medlemskab af kat3,niv2 kan
se således ud: If AktueltMedlemskab And Kat3Niv2 <> 0 Then

En String vil ligeledes kunne bruges. Du kan lade faste pladser have en
bestemt betydning (som i en Long), eller du kan vælge at optræder et A ét
eller andet sted, betyder det at personen er medlem af kat1,niv1,
optræder et B ét eller andet sted, betyder det at personen er medlem af
kat1,niv2 osv. Et check på medlemskab af kat3,niv2 kan se således ud:
If AktueltMedlemskab Like Kat3Niv2 Then

Den første løsning har den fordel at den fylder meget lidt (det vil endda
kunne pakkes ned i en Integer, som fylder 16 bit), men smule plads er
normalt ikke det store problem i vore dage. Den anden løsning har den
fordel at den lettere kan udvides flere kategorier/niveauer eller noget
helt andet (du har 256 muligheder mod 32 i den første løsning).

> Jeg skal kunne "regne" både forlæns og baglæns.

Uddyb - evt. kom med eksempler på hvad du skal kunne regne på. Mener du
tildele/fratage "medlemskab"?

-------
Tomas

Jens Vestergaard (21-04-2005)
Kommentar
Fra : Jens Vestergaard


Dato : 21-04-05 19:39

I news:Xns963FACAF57410tomascdenmark@212.242.40.170,
skrev Tomas Christiansen <toc-01-nospam-removethisword@blikroer.dk>:
> Jens Vestergaard skrev:
>> Jeg har en gruppe mennesker, som kan inddeles i fire kategorier:
>> kat1-kat4 Indenfor hver kategori kan en person have fire niveauer:
>> niv-niv4
> ...
>> Kan jeg med en enket unik værdi udtrykke personernes placering.
>
> Hvis både betydning og antal af kategorier og betydning og antal af
> niveauer aldrig ændrer sig, kan du bruge enhver datatype, som kan
> opdeles i 4*4=16 enkeltdele, som skal kunne tilgås uafhængig af
> hinanden.
>

Først tak for forslag..

>> Jeg skal kunne "regne" både forlæns og baglæns.
>
> Uddyb - evt. kom med eksempler på hvad du skal kunne regne på. Mener
> du tildele/fratage "medlemskab"?

Det jeg gerne vil kunne - nemmest muligt - er at lave en kode, der ...
1) "den ene vej" omsætter f.eks. 4x4 afkrydsningsfelter til en værdi og
2) "den anden vej" omsætter værdien til "checked"/"unchecked" i 4x4
afkrydsningsfelter

Altså
Kat 1: niv1(flueben), niv2(flueben), niv3, niv4
Kat 2: niv1, niv2, niv3, niv4(flueben)
.... ...

Men hvis jeg bruger en streng, kunne værdien naturligvis bare sammensættes
som:

Dim c as CheckBox
Dim sValue as string
For Each c in chkNiveauer
sValue = sValue & c.Value
Next

Og den anden vej..:
For x= 1 to Len(cValue)
chkNiveauer(x).Value = Mid(sValue, x, 1)
Next

Nu tænkte jeg lige højt...
Men det vil vel egentlig fungere udmærket...
Tak for inspirationen! Et lille skub, og det hele ser ganske enkelt ud,
når det kommer til stykket.

--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp





Agner (21-04-2005)
Kommentar
Fra : Agner


Dato : 21-04-05 20:45


"Jens Vestergaard" <j@railsoft.dk> skrev i en meddelelse
news:4267ba1a$0$172$edfadb0f@dtext02.news.tele.dk...
> Hejsa,
> Det er måske mere "grundlæggende programmering/matematisk forståelse",
> end
> det er VB - men løsningen skal laves i VB, så jeg vover det ene øje.
>
> Fakta:
> Jeg har en gruppe mennesker, som kan inddeles i fire kategorier: kat1-kat4
> Indenfor hver kategori kan en person have fire niveauer: niv-niv4
>
> For eksempel:
> A. Hansen ligger i kat3, hvor han er på niv2 og niv3 - og i kat4, hvor han
> er på niv1 og niv3
> N. Jensen ligger i kat1, hvor han er på niv4
> J. Olsen findes i samtlige kategorier på samtlige niveauer
>
> Problem:
> Kan jeg med en enket unik værdi udtrykke personernes placering. Læg mærke
> til, at hver enkelt person kan ligge i 1, 2 3 eller 4 kategorier og i hver
> kategori på 1, 2 3, eller 4 niveauer. Alle kombinationer er altså mulige.
>
> Jeg skal kunne "regne" både forlæns og baglæns.
>
>
> --
> mvh
> Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
> Døgnets jernbanenyheder: www.railsoft.dk/medier.asp

Du kan udtryk og code det i hexNotation. Der skal 5 hexCifre til:
For eksempel A. Hansen: &H5600B&
&H5600B& = 0101|0110|0000|0000|1100
Start fra højre: her er 1100 == kat4,kat3,kat2,kat1
idet A.Hansen ligger i kat4 og kat3.
De næste 4 hexCifre står for niveau'erne, sådan, at det første 0000 tilhører
kat1,
det næste 0000 tilhører kat2, det næste 0110 tilhører kat3 og det sidste
0101
tilhører kat4.
Hextallet kan ved hjælp af VB omsættes til en long heltals-værdi. Og kan
altid omsættes tilbage til det oprindelige hextal - &H5600B&
A. Hansen får altså ID-nummeret &H5600B&
Hvis du har A.Hansen og adresse i en Listbox kan du jo holde ID-nummeret i
Listboxens ItemValue.

agner



Agner (22-04-2005)
Kommentar
Fra : Agner


Dato : 22-04-05 12:27

Korrektion:
&H5600B& = 0101|0110|0000|0000|1100
skal være:
&H5600C& = 0101|0110|0000|0000|1100



Jens Vestergaard (22-04-2005)
Kommentar
Fra : Jens Vestergaard


Dato : 22-04-05 14:02

I news:426802b3$0$692$edfadb0f@dread16.news.tele.dk,
skrev Agner <agner@ingenmail.com>:
> "Jens Vestergaard" <j@railsoft.dk> skrev i en meddelelse
> news:4267ba1a$0$172$edfadb0f@dtext02.news.tele.dk...
>> Fakta:
>> Jeg har en gruppe mennesker, som kan inddeles i fire kategorier:
>> kat1-kat4 Indenfor hver kategori kan en person have fire niveauer:
>> niv-niv4
>>
>> For eksempel:
[snip]
>
> Du kan udtryk og code det i hexNotation. Der skal 5 hexCifre til:
> For eksempel A. Hansen: &H5600B&
> &H5600B& = 0101|0110|0000|0000|1100
> Start fra højre: her er 1100 == kat4,kat3,kat2,kat1
> idet A.Hansen ligger i kat4 og kat3.
> De næste 4 hexCifre står for niveau'erne, sådan, at det første 0000
> tilhører kat1, det næste 0000 tilhører kat2, det næste 0110 tilhører kat3
og det
> sidste 0101 tilhører kat4.

Jep, det var også lidt det, jeg nåede frem til - med Tomas' hjælp - blot vil
jeg nøjes med 4 'cifre', idet
hver 'ciffer' (gruppe, hvis det er en streng) er god nok til at repræsentere
en kategori,
f.eks. 1000 0100 0000 0111
niv1 i kat1 - niv2 i kat2 - intet i kat3 - niv2,3,4 i kat4

Men tak for input anyway

--
mvh
Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
Døgnets jernbanenyheder: www.railsoft.dk/medier.asp



Agner (21-04-2005)
Kommentar
Fra : Agner


Dato : 21-04-05 21:12

ID-nummer for kategori og niveau
- Ikke for personen selvfølgelig.
Skal du ha personen med i nummeret skal der mere til.



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste