2002/03 – Fase scolastica – 04

Il vettore c contiene una stringa di n caratteri, alcuni dei quali sono spazi.
La seguente funzione deve calcolare e restituire il numero di parole contenute nella stringa (una parola è una sequenza di caratteri consecutivi diversi da spazio che non si possa estendere né a sinistra né a destra mantenendo questa proprietà).
Si assuma che il primo carattere del vettore non sia spazio.

Type
   stringa = Array[1..100] Of Char;

Function contaParole(c: stringa; n: Integer): Integer;
Var
   i, j: Integer;
Begin
   j:=0;
   For i:=1 To n-1 Do
      If((c[i] <> ' ') And (c[i+1] = ' ')) Then
         j:=j+1;
   contaParole:=j
End;

Purtroppo il programma contiene un errore che provoca una risposta sbagliata in uno dei seguenti casi:

  1. Il programma non funziona se l’input contiene solo spazi.
  2. Il programma non funziona se la stringa è vuota (cioè, se non contiene caratteri).
  3. Il programma non funziona se la stringa non termina con uno spazio.
  4. Il programma non funziona se la stringa termina con uno spazio.