Challenge - VC++ VB Split/Join

Signaler
Messages postés
1
Date d'inscription
mercredi 12 février 2003
Statut
Membre
Dernière intervention
10 avril 2006
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
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

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

if(!Meilleur("Joky")) return ERREUR;<
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
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++