
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
.
:= 0
counta for i:=0; i<10; i++ {
.Scan(&parola)
fmtif parola[0] == ’a’ {
++
counta }
}
:= 0
countb for i:=0; i<10; i++ {
.Scan(&parola)
fmtif 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++ {
.Scan(&parola)
fmt...
}
.Println(counta)
fmt.Println(countb)
fmt}
Completate le parti mancanti del programma e salvatelo con il nome count_a_and_b.go
.