Page 1 sur 1
Comment Faire
Publié : dim. 28/mars/2004 10:01
par julien
~ Selon vous quel serai la methode la plus simple pour comparer des donné dans un fichier sous cette forme
***********************
Bonjour = Français
Hello = Anglais
Bonjour = N'est pas Anglais
Bonjour = Français
Hello= N'est pas Allemand
**********************
En fait je voudrai savoir combien Bonjour à de valeur différente,
dans cette exemple il à 2 valeur différente
Et ceci pour tous (Bonjour, Hello,.... qui sont aléatoire dans le fichier)
Je ne sais pas si je suis bien clair
Bon Dimanche à tous et n'oubliez pas de changer l'heure

~
Publié : dim. 28/mars/2004 12:16
par comtois
ben , peut-être en modifiant un peu le code que j'ai posté dans truc et astuce "compteur de mots dans un fichier" ?
il faudra chercher "Bonjour = xxxx " , puis isoler xxxx et utiliser l'arbre qui va se charger de te compter les versions différentes et combien de fois elles apparaissent
Publié : dim. 28/mars/2004 16:16
par comtois
Est-ce ce genre de résultat que tu souhaites ?
Code : Tout sélectionner
;PureBasic 3.89
#Null = 0
Structure Noeud
Mot.s ; le mot
Compteur.l ; compte le nombre d'apparition d'un mot
*Gauche.Noeud ; Mot inférieur
*Droit.Noeud ; Mot supérieur
EndStructure
Global *Racine.Noeud
*Racine = #Null
Procedure CompareMot(Mot1.s,Mot2.s,Casse.l)
If Casse = 1
Mot1 = UCase(Mot1)
Mot2 = UCase(Mot2)
EndIf
Index = 1
While Mid(Mot1,Index ,1) = Mid(Mot2,Index ,1) And Len(Mot1)>=Index
Index + 1
Wend
If Mid(Mot1,Index,1) = Mid(Mot2,Index ,1)
Resultat = 0
ElseIf Mid(Mot1,Index ,1) < Mid(Mot2,Index ,1)
Resultat = -1
Else
Resultat = 1
EndIf
ProcedureReturn Resultat
EndProcedure
Procedure AfficheArbre(*Noeud.Noeud)
If *Noeud <> #Null
AfficheArbre(*Noeud\Gauche)
Debug *Noeud\Mot + " => " + Str(*Noeud\Compteur) + " fois"
AfficheArbre(*Noeud\Droit)
EndIf
EndProcedure
Procedure Arbre(*Noeud.Noeud,Mot.s)
If *Noeud = #Null
*Noeud = AllocateMemory(SizeOf(Noeud))
If *Noeud
*Noeud\Mot = Mot
*Noeud\Compteur = 1
*Noeud\Gauche = #Null
*Noeud\Droit = #Null
Else
MessageRequester("Erreur","Impossible d'allouer de la mémoire !",0)
End
EndIf
ElseIf CompareMot(Mot,*Noeud\Mot,1)=0
*Noeud\Compteur + 1
ElseIf CompareMot(Mot,*Noeud\Mot,1)<0
*Noeud\Gauche=Arbre(*Noeud\Gauche,Mot)
Else
*Noeud\Droit=Arbre(*Noeud\Droit,Mot)
EndIf
ProcedureReturn(*Noeud)
EndProcedure
;Première série de tests
*Racine=Arbre(*Racine,"Bonjour = Français")
*Racine=Arbre(*Racine,"Hello = Anglais")
*Racine=Arbre(*Racine,"Bonjour = N'est pas Anglais")
*Racine=Arbre(*Racine,"Bonjour = Français")
*Racine=Arbre(*Racine,"Hello= N'est pas Allemand")
AfficheArbre(*Racine)