Algorithme occurence juste ?

Fermé
capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 - 6 févr. 2011 à 19:32
capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 - 7 févr. 2011 à 09:04
Bonjour,

j'ai fait un algo j'aimerai savoir si c'est juste

il doit permettre de compter le nombre d'occurences d'une chaine dans une autre chaine

exemple : ABC dans XABCGGABCJJJAB ; on aura pour résultat : 2

Algo occurence

Var

chaineMot, chaineRech : chaine

nbLettre, pos, y : entier

absent : booléen

Début

Afficher(" saisir le mot entier")

saisir (chaineMot)

Afficher ("saisir la chaine a rechercher")

saisir (chaineRech)

nbLettre <-- Longueur (mot)

y <-- 0

absent <-- rang (chaineMot, chaineRech , 1) = 0

pos <-- rang (chaineMot, chaineRech , 1) + 1


Tant que ( NON absent et pos =< nbLettre)

y <-- y + 1

absent <-- rang (chaineMot, chaineRech , pos) = 0

pos <-- rang (chaineMot, chaineRech , pos) + 1

FTQ

Si NON absent

alors y <-- y + 1

Fsi

Afficher (" il y a " + y + " occurence " )

Fin



2 réponses

capa57 Messages postés 352 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 26 mai 2016 13
7 févr. 2011 à 09:04
la fonction rang sert à retourner la position d'un caractère dans une chaine

exemple

rang (chaineMot, chaineRech , 1)

on recherche "chaineRech" dans "chaineMot" à partir de la "1" ère lettre
1
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
Modifié par Hxyp le 7/02/2011 à 06:16
Bonjour,
Je ne comprend pas la fonction de rang() car il prend les deux chaines et une position on ne sait pas de quelle position il s'agit; vous devriez pouvoir traduire cet algo avec le vôtre :

algo_occurence
chainemot, chainerech : chaine
nb_chainemot, nb_chainerech, y, x, cpt : entier

nb_chainemot <-- longueur(chainemot)
nb_chainerech <-- longueur(chainerech)
y <-- 0
x <-- 0
cpt <-- 0

TANTQUE y < nb_chainemot FAIRE
	SI caractere(chainemot,y) = caractere(chainerech,x) ALORS
		x <-- x + 1
	FINSI
	SINON x <-- 0
	SI x = nb_chainerech ALORS
		cpt <-- cpt + 1
		x <-- 0
	FINSI
	y <-- y + 1
FINTANTQUE

RETOURNE cpt
0