Adloun

Compter les mots

Exercice · OCaml (option informatique), chapitre 6 — Caractères et chaînes de caractères

Énoncé

Écrire compte_mots s, le nombre de mots (suites maximales de caractères non-espaces) de s.

Corrigé

let compte_mots s =
  let n = ref 0 and dans_mot = ref false in
  for i = 0 to String.length s - 1 do
    if s.[i] = ' ' then dans_mot := false
    else begin
      if not !dans_mot then n := !n + 1;   (* début d'un nouveau mot *)
      dans_mot := true
    end
  done;
  !n

On maintient un drapeau dans_mot : on compte un mot de plus chaque fois qu'on entre dans une zone de non-espaces (transition espace lettre). compte_mots " le chat dort " vaut 3. C'est un petit automate à deux états.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.