Avatar billede kingmanon Nybegynder
11. juli 2002 - 18:41 Der er 3 kommentarer og
1 løsning

Konvertering fra C til VB

Hejsa kloge gutter og gutinder ;o)

Jeg har en stump kode som jeg gerne vil have oversat fra C til VB. Har selv gjort et forsøg men vil gerne have et par ord med på om det nu også er rigtigt og om det er korrekt!

Det er denne stump C kode:

srand( (unsigned)time( NULL ) );
char key[14];

for(int i=0;i<13;i++)
{
key[i] = 48 + rand()%10;
}
key[13] = '\0';

Her er det jeg har fundet frem til:

Public Function Rand(ByVal Low As Long, ByVal High As Long) As Long
Randomize
Rand = Int((High - Low + 1) * Rnd) + Low
End Function

Private Sub Command1_Click()
Dim key(14) As Integer
Dim i As Integer

For i = 0 To 12
key(i) = (48 + Rand(0, 32768)) Mod 10
keystreng = keystreng & key(i)
Next

Text1.Text = keystreng

End Sub

Anyone?
Avatar billede a1a1 Novice
11. juli 2002 - 19:21 #1
tjaaa det ser ud som om du mangler en nr. 13, efter dit loop

key(13) = "\0"
hvis du har brug for den jo :)

og jeg kan du ikke finde rand i min vb hjælp?
Rnd er dog et random nummer :) rnd(seedvalue)
men Randomize skal kaldes inden

fra vbs help...
Randomize Statement
Initializes the random-number generator.

Randomize [number]

The number argument can be any valid numeric expression.

Remarks
Randomize uses number to initialize the Rnd function's random-number generator, giving it a new seed value. If you omit number, the value returned by the system timer is used as the new seed value.

If Randomize is not used, the Rnd function (with no arguments) uses the same number as a seed the first time it is called, and thereafter uses the last generated number as a seed value.

Note  To repeat sequences of random numbers, call Rnd with a negative argument immediately before using Randomize with a numeric argument. Using Randomize with the same value for number does not repeat the previous sequence.

_______________________
Rnd Function
Returns a random number.

Rnd[(number)]

The number argument can be any valid numeric expression.

Remarks
The Rnd function returns a value less than 1 but greater than or equal to 0. The value of number determines how Rnd generates a random number:

If number is Rnd generates
Less than zero The same number every time, using number as the seed.
Greater than zero The next random number in the sequence.
Equal to zero The most recently generated number.
Not supplied The next random number in the sequence.


For any given initial seed, the same number sequence is generated because each successive call to the Rnd function uses the previous number as a seed for the next number in the sequence.

Before calling Rnd, use the Randomize statement without an argument to initialize the random-number generator with a seed based on the system timer.

To produce random integers in a given range, use this formula:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
Here, upperbound is the highest number in the range, and lowerbound is the lowest number in the range.

Note  To repeat sequences of random numbers, call Rnd with a negative argument immediately before using Randomize with a numeric argument. Using Randomize with the same value for number does not repeat the previous sequence.
Avatar billede tjacob Juniormester
11. juli 2002 - 19:24 #2
Det ser rigtig ud, men du har et par småfejl:

Variablen key() indeholder 14 elementer, dvs den skal erklæres som key(13).

key(i) = 48 + (Rand(0,32768)) Mod 10

-De 48 lægges først til EFTER Mod 10 i originalen.

-Desuden mangler du Randomize (svarer til srand).

Rent funktionelt:  key[i] = 48 + rand()%10;
Denne linie vælger et tilfældigt tal mellem 48 og 57 (begge incl).
DVS du kunne lige så godt lave:

Randomize
For i = 0 to 12
    key(i) = Int((Rnd*10) + 48)
Next

-Og helt skippe rand-funktionen.

/tjacob
Avatar billede kingmanon Nybegynder
11. juli 2002 - 21:05 #3
Nogen af jer der har en C compiler installeret der kan give mig et output fra C koden?
Avatar billede kingmanon Nybegynder
15. januar 2003 - 07:05 #4
Lukket
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