Avatar billede klausbobby Nybegynder
03. september 2002 - 09:51 Der er 4 kommentarer og
1 løsning

Programere funktion i Visual Basic

Hej Eksperten.dk

Jeg har et lille programeringsproblem, som jeg meget gerne vil have hjælp til. Jeg ønsker at programere en funktion, som har nogle søgekriterier i sig.

Jeg vil give dig et eksempel på mit problem:


X/Y    230    220    200    180    160      140     

90  13649  13612  13465  13122  12639    11440     

80  13084  13007  12853  12492  11983    10615     

70  11816  11756  11411  11240  10524    9101     

60  9633    9581    9397    9101    8506    7264     

50  7269    7268    7123    6890    6382    5470     

40  4903    4838    4778    4584    4286    3583     

30  3088    3065    2987    2833    2531    2043     

20  1419    1405    1359    1275    1113    862     

10    468    455      448    402      341    290     

0    213    213      197    183      161    134   
Her har du mine dataer.

X= {90,80,70,60.....0}

Y= {230,220,200...140}

Z= {alle værdier fra 13649 til 134}

Nu ville jeg gerne, at jeg kunne søge på en Z værdi, og computeren retunere den højeste X værdi og den Y værdi, der passer til X værdien, til mig. MEN X må ALDRIG overstige 90 eller gå under 0, og Y må SKAL være mellem 140 og 230.

Hvis jeg f.eks. skriver Z= 13649, så skulle computeren gerne retunere 90, 230 til mig, da det jo er den højeste X værdi ved det givne Z punkt. Dette er simpelt, da jeg jo kender X og Y værdierne til 13649, men hvis jeg f.eks skriver 10000, kender jeg jo ikke den højeste X værdi og Y værdien til denne. Y værdien skal ikke være den højeste - den skal bare være mellem 140 og 230.

Jeg har en søge-interpolerings-funktion i Excel, men når jeg bruger den, finder computeren værdier, der ligger over 90 og 230 og det er det jeg søger efter. En funktion, der kan begrænse søgningen, så den ikke overskrider mine grænser.

Samtidig skal programmet også kunne finde ud af
følgende:

Når ovenstående program/funktion har fundet den højeste X værdi (mellem 0 og 90) til et givet punkt Z punkt og den Y værdi, der passer til x værdien (mellem 140 og 230), skal programmet nu kigge i nedenstående tabel:

Y/X
      0  10  20  30  40  50  60  70  80  90

230  11,5 9,3  9,4  9,9 11,1 12,0  9,3  8,8  8,0  7,6

220  13,3 8,1 10,0  9,7 11,1 11,6 10,0  8,7  8,6  8,8

200  10,3 13,9 9,9 11,0 12,4 12,3 10,4  8,8  9,3  9,8

180  12,7 9,2 12,5 12,8 13,1 13,5 12,5 11,4  9,9 11,2

160  20,9 48,9 17,7 16,7 18,1 15,9 17,9 15,4 14,0 14,2

140  37,5 38,6 27,2 26,2 29,0 24,7 25,0 25,6 27,4 33,8

X= {90,80,70,60.....0}
Y= {230,220,200...140}
Z= {resten af værdierne)

Her må de fundne X/Y værdier ALDRIG overskride 23. 

DVS:   
Hvis jeg f.eks i funktion 1 indtaster følgende Z værdi (jeg tager én jeg kender punkterne til):  13649
       
Skal programmet retunere følgende X værdi til mig: 90                       
Og følgende Y værdi: 230                                   
Derefter skal programmet gå ind i tabllen nederst og checke 90, 230. I dette tilfælde er det 7,6, så den kan godt bruges.
Havde Z punktet i den nederste tabel været f.eks 25,3 ved et givet X/Y punkt, kunne den ikke bruges.
I tilfælde hvor det nederste Z punkt er over 23, skal programmet selv finde den højeste X værdi (i øverste tabel), der ligger på eller under 23, så den hele tiden finder den næsthøjeste X værdi, indtil den passer i nederste tabel, hvor X/Y punktet skal være under 23.

Dette ser lidt indviklet ud, men jeg håber meget I kan hjælpe mig (kan I ikke hjælpe mig, håber jeg I har en adresse, man kan henvende sig til sig for yderligere hjælp).

Venlig hilsen
Morten Bro Pedersen
Avatar billede martin_moth Mester
03. september 2002 - 11:09 #1
Jeg var lige gået i gang med at svare dig, men så lige, at de samme værdier står flere steder i den øverste tabel... Så kan man jo ikke bare lige interpolere :o(

Så kom lige med et eksempel - hvilket Output skal Z=10000 hhv. Z=9101 give?
Avatar billede klausbobby Nybegynder
03. september 2002 - 12:52 #2
Fik du mit svar????
Avatar billede mikker Nybegynder
03. september 2002 - 17:57 #3
Fandt du ud af det?
Du har ligesom afsluttet spørgsmålet, er det noget su vil dele med os andre? :-)

- Mikker
Avatar billede mikker Nybegynder
03. september 2002 - 17:58 #4
OK! Fandt spørgsmålet et andet sted :-)

- Mikker
Avatar billede klausbobby Nybegynder
04. september 2002 - 09:35 #5
? lukket og flyttet pga. fejl
http://www.eksperten.dk/spm/253517
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester