Challenge - VC++ VB Split/Join

cs_dpincon Messages postés 1 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 10 avril 2006 - 10 avril 2006 à 16:23
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 10 avril 2006 à 16:40
Voici, j ai l algo suivant (qui fonctionne tres bien en vb). Si qq un arrive à le mettre en C++, je lui offre un irish cooofffee.

Objectif :
1. ouvrir un fichier texte
2. localiser une phrase du type ci dessous
$VVV UNIT$
ou VVV est une valeur
ou UNIT est une unitée
3. modifier la phrase en ajoutant la valeur dans un autre format
VVV UNIT (W UNIT2)
ou W est la nouvelle valeur
ou UNIT2 est la nouvelle unitée
------------------------------------
// Usource est une unité source
// Udest est une unité destination
// Coef est une valeur nurmérique de changement
// Le texte est le buffer complet d un fichier


Function convertir(usource, udest, coef, letexte)
Dim tableau, idxligne, calcul, a, b


'Tableau découpé suivant la phrase trouvée, par exemple " mm$"
tableau = Split(letexte, " " & usource & "$")


'Si j ai un tableau avec différentes dimensions
'je dois le recouper
If UBound(tableau) > 0 Then

For idxligne = LBound(tableau) To UBound(tableau)

'Tableau découpé suivant le "$"
calcul = Split(tableau(idxligne), "$")

'Si j ai un tableau avec différentes dimensions
'je dois rechercher les valeurs numériques
'faire le calcul
If UBound(calcul) > 0 Then

'Si c'est une valeur numérique
'je recalcule l ensemble
If IsNumeric(calcul(UBound(calcul))) Then
a = calcul(UBound(calcul))
b = a * coef
'je place un "x0123x456" pour m avertir qu il y a un calcul
calcul(UBound(calcul)) = "x0123x456" & a & " " & usource & " (" & b & " " & udest & ") "
End If

'je recompose ma ligne
tableau(idxligne) = Join(calcul, "$")

'si je trouve le $ et x0123x456 ensemble je dois remplacer le tout
tableau(idxligne) = Replace(tableau(idxligne), "$x0123x456", "")
End If
Next
End If

'Je refais mon tableau
convertir = Join(tableau, "")
End Function

2 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
10 avril 2006 à 16:33
L'alcool : à consommer avec modération
Donc pas pour moi désolé...

if(!Meilleur("Joky")) return ERREUR;<
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 avril 2006 à 16:40
Absolument jamais on ne réfléchit un algo avec un modèle en VB (ou autre faux code de ce genre) devant soi.
Par exemple pourquoi irait-on reproduire Split() alors que nous avons les pointeurs et autres modes d'accès direct à la mémoire.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous