Inizia con ’a’, inizia con ’b’
Si vuole scrivere un programma che legga una sequenza di dieci stringhe e stampi il numero di stringhe che cominciano con la lettera a e il numero di stringhe che cominciano con b.
Per calcolare il numero di stringhe che cominciano per a, usiamo il piano del conteggio; lo stesso piano serve anche a calcolare il numero di stringhe che cominciano per b.
counta := 0
for i:=0; i<10; i++ {
fmt.Scan(&parola)
if parola[0] == ’a’ {
counta ++
}
} countb := 0
for i:=0; i<10; i++ {
fmt.Scan(&parola)
if parola[0] == ’b’ {
countb ++
}
}Non è possibile combinare questi piani mettendoli semplicemente uno dopo l’altro, perché il piano di conteggio delle parole con a “consumerebbe” le parole lette prima dell’inizio del piano di conteggio delle parole con b.
Per ovviare a questo problema si potrebbe memorizzare l’intera sequenza di parole in input, ma questo è sconsigliato, perché si occuperebbe inutilmente spazio di memoria.
È possibile invece fondere i due piani in un unico ciclo, secondo lo schema seguente:
package main
import "fmt"
func main() {
var parola string
...
for i:=0; i<10; i++ {
fmt.Scan(&parola)
...
}
fmt.Println(counta)
fmt.Println(countb)
}Completate le parti mancanti del programma e salvatelo con il nome count_a_and_b.go.
