[VB] If...Then...?????

Pagina: 1
Acties:

  • TheDiver
  • Registratie: November 2000
  • Laatst online: 28-04 16:53
Ik zit met volgende probleem en weet niet hoe te beginnen.

Ik heb 3 catagorieen teweten: symptonen, diagnose, en de EHBO.
Alle 3 hebben vaste waarden echter de symptonen bestaan uit meerdere waardes.
Wat wil ik nu:
Bij symptonen moet men minimaal 3 waardes opgeven om tot een diagnose te komen. Maar hoe doe ik dit?

Van diagnose naar EHBO snap ik nog wel; dit is een simple If...Then ....
Maar van sypmtonen naar diagnose ...... nu ben ik de weg kwijt.
Wie heeft hier op een simpel doch goed antwoord.

Alvast bedankt voor de genomen moeite.

TheDiver

Eindelijk is de kleur GROEN weer thuis...


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

Wat is de vraag? Is het 1 van de 3? Wat wil je bereiken?

oogjes open, snaveltjes dicht


  • TheDiver
  • Registratie: November 2000
  • Laatst online: 28-04 16:53
Wat is de vraag?; antwoord: Maar hoe doe ik dit?
Is het 1 van de 3?; antwoord: nee, minimaal 3 waardes
Wat wil je bereiken?; antwoord: tot een diagnose te komen

Zoals geschreven staat bestaan alleen de symptonen uit meerdere vastgestelde waardes. De diagnose en EHBO niet, die staan altijd vast. Echter een persoon moet aan meerdere symptonen voldoen om tot een bepaalde diagnose te komen. Voorbeeld: iemand is bewusteloos -> ademt wel of niet -> bloed hij/zij ja/nee enz.

Eindelijk is de kleur GROEN weer thuis...


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Je gooit hier iets heel vaags op tafel en wij moeten maar een antwoord voor je voorkauwen.... ietwat vervelend is het je hier een antwoord op kan geven van ettelijke a4tjes en dat willen we niet ;)

Wat heb je al geprobeerd?
Heb je zelf al enig idee hoe je het op wilt lossen?
Kun je je probleem specifieker beschrijven??

Verwijderd

correct me if i'm wrong, dit lijkt wel een school project...heel vaag :?

  • TheDiver
  • Registratie: November 2000
  • Laatst online: 28-04 16:53
Gaan we nog een keer:

Ik heb een variable genaamd symtoon.
Ik heb 2 constanten genaamd diagnose en ehbo.
Wat ik wil is het volgende: hoe geef ik aan, dat als ik 3 variablen heb die juist zijn, dit naar een constante gerelateert moet worden.
Gaat dit bijv. met IF ..... ELSEIF/AND/OR....... THEN....
Dit wil ik weten.

Beter kan ik het niet uitleggen.

Groet TheDiver

Eindelijk is de kleur GROEN weer thuis...


  • dust | zone
  • Registratie: Juni 2001
  • Laatst online: 25-03 13:34

dust | zone

don't ask...

Vraag me niet om syntax, want zoveel programmeer ik niet, maar wat dacht je hiervan :

Bij alle diagnoses horen bepaalde symptonen. Dus bij elk symptoon vul je de bijbehorende diagnoses met een waarde. De diagnose wordt dan wel een variabele.

if symptoon1=koorts then
griep:=griep+1
malaria:=malaria+1
endif
if symptoon2=overgeven then
griep:=griep+1`
endif

etc....

en achteraf controleren welke ziekte(diagnose) de hoogste waarde heeft. Ik ga er dan vanuit je niet zelf symptonen kunt verzinnen, maar dat je een standaard pakket aan keuzes hebt.

[ Voor 0% gewijzigd door dust | zone op 07-09-2002 07:06 . Reden: toevoeging ]

Asus A7V266 | AMD Dondervogel 1400 | >200 GB aan schijfjes


  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

kptelmo schreef op 07 september 2002 @ 07:05:
Vraag me niet om syntax, want zoveel programmeer ik niet, maar wat dacht je hiervan :

Bij alle diagnoses horen bepaalde symptonen. Dus bij elk symptoon vul je de bijbehorende diagnoses met een waarde. De diagnose wordt dan wel een variabele.

if symptoon1=koorts then
griep:=griep+1
malaria:=malaria+1
endif
if symptoon2=overgeven then
griep:=griep+1`
endif

etc....

en achteraf controleren welke ziekte(diagnose) de hoogste waarde heeft. Ik ga er dan vanuit je niet zelf symptonen kunt verzinnen, maar dat je een standaard pakket aan keuzes hebt.
Dat is niet heel slim, want maar 1 symptoom kan vast de hele diagnose al vastleggen: if symptoonX = heel veel bloed then "slagaderlijke bloeding" endif

't Is gewoon een soort kennissysteem. De handigste manier om 't aan te pakken is gewoon de zooi in eerst in een tabelletje zetten... dan pak je het symptoom dat het meeste onderscheid maakt (dus ongeveer 50% heeft 't wel, en 50% niet). Daardoor kun je je tabel voor de helft verkleinen, en begin je opnieuw.

  • TheDiver
  • Registratie: November 2000
  • Laatst online: 28-04 16:53
@ kptelmo en Poohbear

Jongens bedankt, jullie begrepen mij en hebben mij goed verder geholpen.
Soms ligt iets zo voor de hand en kan je er niet opkomen en probeer dat maar uit te leggen zodat een kind van 2 het ook snapt.
Het blijft moelilijk en zeker lezen.

Grtz TheDiver

Eindelijk is de kleur GROEN weer thuis...


  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

En mensen die wel kijken maar je helaas niet kunnen helpen worden niet bedankt :+

Mother, will they like this song?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:01

.oisyn

Moderator Devschuur®

Demotivational Speaker

imho pak je het verkeerd aan: je moet de evaluatie van de symptomen niet hardcoded in je programma zetten (dus geneste if constructies). Bij 3 symptomen is dat misschien niet echt boeiend omdat er maar maximaal 8 mogelijkheden zijn, maar stel nou dat je een vraagstuk hebt met veel meer verschillende varianten, als je daar de code voor gaat schrijven dan wordt dat te ingewikkeld en moeilijk aanpasbaar.

Misschien is het handig om een lijstje in je programma te definieren met alle diagnoses en de symptomen die daarbij horen. Dan kun je de lijst doorlopen en elk element uit die lijst vergelijken met de symptomen die je op dat moment hebt, en als het helemaal klopt dan is de diagnose die bij dat element hoort het resultaat.

in pseudocode:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Structure SymptoomDiagnose
    diagnose As Diagnose
    symptomen As Collection Of Symptoom
End Structure

Dim diagnoses() As SymptoomDiagnose =
   (diagnose1, (symptoomX, symptoomY),
    diagnose2, (symptoomX, symptoomZ),
    diagnose3, (symptoomZ))


Function stelDiagnose (symptomen As Collection Of Symptoms) as Diagnose
    ForEach (d In diagnoses)
        If (d.symptomen = symptomen) Then
            stelDiagnose = d.diagnose
            Exit Function
        End If
    End ForEach

    stelDiagnose = null
End Function



(hoewel VB geloof ik wel wat onhandig is in het definieren van arrays enzo...)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

.oisyn schreef op 09 september 2002 @ 01:42:
imho pak je het verkeerd aan: je moet de evaluatie van de symptomen niet hardcoded in je programma zetten (dus geneste if constructies). Bij 3 symptomen is dat misschien niet echt boeiend omdat er maar maximaal 8 mogelijkheden zijn, maar stel nou dat je een vraagstuk hebt met veel meer verschillende varianten, als je daar de code voor gaat schrijven dan wordt dat te ingewikkeld en moeilijk aanpasbaar.

(hoewel VB geloof ik wel wat onhandig is in het definieren van arrays enzo...)
Naar mijn idee was dat niet precies wat hij wilde (iets met "minimaal 3 waardes" aan het begin), maar wilde hij een systeem dat real-time symptomen langsliep om zo tot een diagnose te komen. Je weet dus vantevoren nog niet welke symptomen je hebt (en aangezien er misschien wel duizend kunnen zijn, waarvan je er maar drie nodig hebt, wil je het de gebruiker niet aandoen om ze alle duizend in te voeren). Het programma beslist dus afhankelijk van het antwoord op een diagnosevraag welke volgende vraag hij gaat stellen.

Mocht de opdracht niet zo zijn, dan nog is dit een veel mooiere oplossing :+
Zie voor korte uitleg implementatie mijn vorige post.

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 28-08 15:30

sopsop

[v] [;,,;] [v]

Doe gewoon handig en zeg:
a,b,c,d,e,f zijn symptomen.
code:
1
2
3
4
5
6
7
if a and b and c then
   diagnose = 1
elseif b and c and not a then
  diagnose = 2
elseif d and b and f then
 diagnose = 3
end if

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

boppert schreef op 09 september 2002 @ 11:35:
Doe gewoon handig en zeg:
a,b,c,d,e,f zijn symptomen.
code:
1
2
3
4
5
6
7
if a and b and c then
   diagnose = 1
elseif b and c and not a then
  diagnose = 2
elseif d and b and f then
 diagnose = 3
end if
Dat is dus nogal lekker als je 500 symptomen en 1000 ziektes hebt. Bovendien kun je dan nog steeds niet van de gebruiker de juiste symptomen vragen, zodat hij ze altijd allemaal moet invoeren om een diagnose te stellen (1000 ipv 3 dus).

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Hmm, vreemd, ik dacht dat ik al een reactie had neergezet

Dit probleem leent zich ideaal voor een binaire zoekboom.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Janoz schreef op 09 september 2002 @ 12:39:
Hmm, vreemd, ik dacht dat ik al een reactie had neergezet

Dit probleem leent zich ideaal voor een binaire zoekboom.
Poohbear schreef op 07 september 2002 @ 07:57:
[...]

't Is gewoon een soort kennissysteem. De handigste manier om 't aan te pakken is gewoon de zooi in eerst in een tabelletje zetten... dan pak je het symptoom dat het meeste onderscheid maakt (dus ongeveer 50% heeft 't wel, en 50% niet). Daardoor kun je je tabel voor de helft verkleinen, en begin je opnieuw.
:z

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 28-08 15:30

sopsop

[v] [;,,;] [v]

Poohbear schreef op 09 september 2002 @ 12:13:
[...]


Dat is dus nogal lekker als je 500 symptomen en 1000 ziektes hebt. Bovendien kun je dan nog steeds niet van de gebruiker de juiste symptomen vragen, zodat hij ze altijd allemaal moet invoeren om een diagnose te stellen (1000 ipv 3 dus).
maar met minder is het handig hè?!

Maar goed als het er dan zouveel zijn, zou ik idd een tabel met symptomen maken.
Vervolgens een tabel met diagnoses
en een crossreference tabel met symptoom<->diagnose.
Bijv:
code:
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
tabel Symptomen                     

id naam     omschrijving
1  vlekken  gore vlekken
2  wratten  gore wratten
3  plekken  gore plekken
4  sproeten vieze sproeten
5  pus      smerige pus

tabel Diagnose                     

id naam     omschrijving
1  HIV      oe veilig vrijen nou
2  aids     bye bye     
3  herpes   op je lip of je lip
4  verkouwe gezondheid    
5  kanker   bestralen

tabel CrossReference     

id DiagID  SympID    
1  1       1
2  1       2
3  1       3
4  2       3
5  2       4

Kun je je Diagnose eruit sequalen.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:01

.oisyn

Moderator Devschuur®

Demotivational Speaker



tabel != binaire zoekboom
en als je dat wel bedoelde dan had je dat moeten zeggen (kunnen wij tenslotte toch ook niet raden) ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

.oisyn schreef op 09 september 2002 @ 17:57:

[...]


tabel != binaire zoekboom
en als je dat wel bedoelde dan had je dat moeten zeggen (kunnen wij tenslotte toch ook niet raden) ;)
Qua implementatie heb je natuurlijk gelijk, maar 't algoritme dat ik voorstel doet eik precies hetzelfde. (De kolommen in de tabel zijn je levels, de waarde in de kolom bepaalt je branch). Bovendien is mijn code sneller te schrijven en eenvoudiger onderhoudbaar.

offtopic:
wat een afschuwelijk icoon heb je ;)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:01

.oisyn

Moderator Devschuur®

Demotivational Speaker

eigenlijk is het gewoon een expert systeem :)
wat een afschuwelijk icoon heb je ;)
[rml].oisyn in "[Icon] Kan geen contact opnemen met icondief"[/rml] :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • TheDiver
  • Registratie: November 2000
  • Laatst online: 28-04 16:53
Aan u allen die die bericht gelezen en beantwoordt hebben, DANK.

Eindelijk is de kleur GROEN weer thuis...

Pagina: 1