Page under construction!!

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.