Algorithme, inverser mots d'une phrase

Bonjour,

J'ai une question, je bloque sur la résolution d'un problème

je cherche à résoudre un algorithme me permettant d'inverser l'ordre des mots dans une phrase

par exemple : "il fait beau, il fait chaud."

réponse : "chaud. fait il beau, fait il"

comment faire ?
en langage algo papier basique

j'ai pensé à ça

Algorithme inversion
Var
réponse, résultat, phrase, temp1, temp2 : chaine
pos, long : int

Début

long <-- longueur(phrase)
pos <-- position (" "; phrase; 1)
// recherche d'un espace dans ma phrase à partir du 1er caractère

résultat <-- sousChaine( phrase; 1 ; pos -1)
// récupère la valeur à partir de la position 1 jusqu'à pos - 1 donc ici on récupère : " il "

temp1 <-- résultat
temp2<-- pos

pos <-- position (" "; phrase; pos + 1)
//pos = 8
résultat <-- sousChaine (phrase; temp2 + 1; pos - 1)
// résultat = fait
temp1 <-- résultat + temp1
// temp1 = fait il

J'ai commencé par ça, je pense être sur la bonne voie, il me faudrait un tant que ?
tant que position différent de 0 faire ... non ?

2 réponses

  1. bonjour,

    une fonction VBA qui repond a ta question où
    InStr corrspond a ton pos
    Mid correspond à sous_chaine
    & correspond a la concaténation

    à toi de traduire

    Function inverse_phrase(p As String) As String 
    Dim debmot As Long, finmot As Long 
    Dim mot As String, ss As String 
    ss = "" 
    p = p & " " 
    debmot = 1 
    finmot = InStr(debmot, p, " ") 
    While finmot <> 0 
      mot = Mid(p, debmot, finmot - debmot) 
      debmot = finmot + 1 
      ss = mot & " " & ss 
      finmot = InStr(debmot, p, " ") 
    Wend 
    inverse_phrase = ss 
    End Function


    RQ. au départ p = p & " ", on ajoute un espace a p, le dernier calcul de finmot à partir de cet espace, donnera 0 et arretera le tant que

    bonne suite