TD3 – Chaines
Javanais
Traduire une phrase française en javanais : il s’agit d’ajouter ‘AV’ à chaque fois qu’on rencontre une consonne suivie d’une voyelle.
Exemple : ‘je travaille’ ‘jAVe trAVavAVaillAVe’
Soit
francla chaîne en français et
javala chaîne en javanais.
Analyse 1 : On recopie la chaîne
francdans
javajusqu’à rencontrer dans
francune consonne suivie d’une voyelle. On copie la consonne dans
javapuis on ajoute la chaîne
‘AV’. On continue ce principe jusqu’à la fin de la chaîne
franc.
Analyse 2 : On copie
francdans
java. On parcourt
javaet lorsqu’on rencontre une consonne suivie d’une voyelle, on insère entre les deux lettres la chaîne ‘ AV’. On itère jusqu’à la fin.
Type consonnes={‘b’,’c’,’d’,’f’,’g’,’h’,’j’,’k’,’l’,’m’,’n’,’p’,’q’,’r’,
’s’,’t’,’v’,’w’,’x’,’z’}
voyelles = {‘a’,’e’,’i’,’o’,’u’,’y’}
Fonction javanais(franc : chaine) : chaine Var i, j : entier
java : Chaine Début
j1
Pour i1 à lg(franc)-1 inc +1 faire java(j)franc(i)
jj+1
Si (franc(i) dans consonnes et franc(i+1) dans voyelles) alors javaconcaténer(java,’AV’)
jj+2 FinSi
FinPour
javaconcaténer(java, franc(i+1)) retourner(java)
Fin
Fonct ion javanais1(franc : chaine) : chaine Début
Var i, j : entier
javanais1CréerChaîne() i0
Répète ji Répète
ii+1
Jusqu’à (Ième(franc,i) dans consonne) et (Ième(franc,i+1) dans voyelle)
ou (i = Lg(franc)-1)
javanais1Concat(javanais1,Copie(franc,j+1,i-j))
Si (Ième(franc,i) dans consonne) et (Ième(franc,i+1) dans voyelle) Alors javanais1Concat(javanais1,’AV’)
FinSi
Jusqu’à (i = Lg(franc)-1)
javanais1Concat(javanais1,Copie(franc,i+1,1) Fin
Fonction javanais2(franc : phrase) : phrase Var i : entier
Début
javanais2CréerChaîne() javanais2franc
i0 Répète
Répète ii+1
Jusqu’à (Ième(javanais2,i) dans consonne)
et (Ième(javanais2,i+1) dans voyelle) ou (i = Lg(javanais2)-1)
Si (Ième(javanais2,i) dans consonne) et (Ième(javanais2,i+1) dans voyelle)
Alors javanais2Insère(‘AV’,javanais2,i+1) ii+2
FinSi
Jusqu’à (i = Lg(franc)-1) Fin
S’il y a le temps, réfléchir à la façon de traduire du javanais en français.
Fonction javanais-inverse (java : chaine) : chaine Var i : entier
franc : chaine Debut
francjava i2
TantQue i<lg(franc) Faire
Si franc(i)=‘A’ et franc(i+1)=’V’
Alors franceffacer(franc,i,2) FinSi
ii+1 FinTantQue
Retourner(franc) Fin
Fonction javanais-inverse(java : chaine) : chaine Var i,j : entier
franc, ja : chaine sup : booléen Début
francjava jajava i-1 supvrai Répète
jpos(ja,’’av’’) Si j0
Alors
Si (j=1 et sup) ou (j1 et jlg(ja)-1 et (ja[j-1] dans consonnes et ja[j+2] dans voyelles)) Alors ipos(franc,ja)+j-1
francsupprimer(franc,i,2) jacopie(franc,i,lg(franc)-i+1)
supvrai
Sinon
jacopie(franc,i+2,lg(franc)-i+1) supfaux
FinSi FinSi
jusqu’à j=0 retourne(franc) Fin