Adloun

OCaml (option informatique) · Chapitre 6 · Exercice de TD

Compter les mots

Caractères et chaînes de caractères · niveau 3 (difficile)

É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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre