Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Translating C++ FOR cycle into Foxpro code
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Divers
Thread ID:
00064105
Message ID:
00064394
Vues:
40
David thanks i've tried already several combinations using FOR and DO WHILE and no luck yet, but looking at your translation in this next line you added a -48, is there any purpose for it?

"digit = val( substr( tempCustStr, i, 1 ) ) - 48"

Thanks,

Gil


>
>I think this will give you the same result as the C code:
>rhs = 0
>for i = strlen( tempCustStr ) to 1 step -1
> digit = val( substr( tempCustStr, i, 1 ) ) - 48
> if ( i % 2 = 0 )
> rhs = rhs + digit
> else
> rhs = rhs + int( 2 * digit / 10 ) + ( 2 * digit ) % 10
> endif
>endfor
>
>rhs = 99 - rhs
>checkdigit = int( rhs / 10 )
>lastdigit = rhs % 10
>
>
>>Hi everyone, I've been cracking my head trying to translate this cycle and into FP code; so far I haven't had any luck. If anybody can, please help.
>>
>>*Sample value:
>>tempCustStr = '50400000019'
>>
>>****C++ code:******
>>rhs = 0
>>for (i = strlen(tempCustStr)-1;i>=0;i--){
>> digit = *(tempCustStr + i) - '0'
>> if (i % 2 == 0) {
>> rhs += digit;
>> //odd digits
>> } else {
>> rhs += (2 * digit) /10 + (2 * digit) % 10;
>> }
>>}
>>
>>rhs = 99 - rhs
>>checkdigit = rhs / 10
>>lastdigit = rhs % 10
>>
>>****My FP code: (It's not working properly)******
>>rhs = 0
>>i = LEN(tempCustStr) - 1
>>DO WHILE i >= 0
>> digit = VAL(SUBST(tempCustStr,i,1))
>> IF i % 2 = 0
>> rhs = rhs + digit
>> ELSE
>> rhs = rhs + ((2 * digit)/10) + ((2 * digit) % 10)
>> ENDIF
>> i = i - 1
>>ENDDO
>>
>>rhs = 99 - rhs
>>checkdigit = rhs /10
>>lastdigit = rhs % 10
>>
>>Thanks a lot, I really appreciate any help
>>
>>Have a good day,
For every bug fixed, there is a bigger bug not yet discovered.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform