Skip to content
Snippets Groups Projects
Unverified Commit fc7c64e3 authored by Andrea Trentini's avatar Andrea Trentini
Browse files

alcune soluzioni lab5

parent 6ecd4501
No related branches found
No related tags found
No related merge requests found
/*
Scrivi una funzione
punti(s string) int
che accetta una stringa di 3 caratteri che rappresenta una mano di tre carte e restituisce il punteggio complessivo relativo per il gioco della briscola. Ad esempio per la mano "53J" restituisce 12 (10 della carta 3 + 2 del fante)
Scrivi un main per invocare e testare la funzione. Il programma legge da standard input una stringa e controlla che sia di tre caratteri. Poi stampa
mano <mano>: <tot> punti
Punti a briscola:
Asso (A): 11
3: 10
Re (K): 4
Donna (Q): 3
Fante (J): 2
7, 6, 5, 4, 2: 0
*/
package main
import "fmt"
func main() {
var mano string
fmt.Print("mano: ")
fmt.Scan(&mano)
if len(mano) != 3 {
fmt.Println("errore nell'input, le carte devono essere 3")
}
punti := punti(mano)
if punti == -1 {
fmt.Println("carte non valide")
} else {
fmt.Println("mano", mano, ":", punti, "punti")
}
}
func punti(s string) (punti int) {
punti = 0
Loop:
for _, c := range s {
switch c {
case 'A':
punti += 11
case '3':
punti += 10
case 'K':
punti += 4
case 'Q':
punti += 3
case 'J':
punti += 2
case '7', '6', '5', '4', '2':
//punti += 0
default:
//carta non valida, annullo il punteggio con -1 e interrompo il ciclo
punti = -1
break Loop
}
}
return punti
}
package main
import (
"fmt"
"unicode"
)
func main() {
//preliminary testing
/*
fmt.Println(isPalindrome("ciao"))
fmt.Println(isPalindrome("anna"))
fmt.Println(hasUpper("ldskfjaldskhflsd A lsjdlsf ldskjf"))
fmt.Println(hasUpper("ldskfjaldskhflsd "))
fmt.Println(countDigitsLettersOthers("ldskfjaldsk5sdasas8hflsd"))
fmt.Println(countDigitsLettersOthers("a6h ["))
*/
/*
legge una stringa da standard input e stampa i risultati ("ha maiuscole" / "non ha maiuscole", "prima maiuscola in posizione ...", “palindroma" / "non palindroma", ecc.).
*/
var stringa string
fmt.Scan(&stringa)
if !hasUpper(stringa) {
fmt.Print("non ")
}
fmt.Println("ha maiuscole")
fmt.Println("prima maiuscola in posizione", firstUpper(stringa))
fmt.Println("ultima maiuscola in posizione", lastUpper(stringa))
fmt.Print("cifre, lettere, altro: ")
fmt.Println(countDigitsLettersOthers(stringa))
if !isPalindrome(stringa) {
fmt.Print("non ")
}
fmt.Println("palindroma")
}
func hasUpper(s string) bool {
// scorrere stringa e cercare maiuscole
l := len(s)
for indice := 0; indice < l; indice++ {
//fmt.Print(string(s[indice]))
// verifica maiuscola, se sì esco
if s[indice] >= 'A' && s[indice] <= 'Z' {
return true
}
}
return false
}
func firstUpper(s string) int {
l := len(s)
for indice := 0; indice < l; indice++ {
// verifica maiuscola, se sì esco
if s[indice] >= 'A' && s[indice] <= 'Z' {
return indice
}
}
return -1
}
func lastUpper(s string) int {
// scorrere stringa dalla fine e cercare maiuscole
l := len(s)
for indice := l - 1; indice >= 0; indice-- {
// verifica maiuscola, se sì esco
if s[indice] >= 'A' && s[indice] <= 'Z' {
return indice
}
}
return -1
}
func countDigitsLettersOthers(s string) (cifre, lettere, altri int) {
// scorrere stringa e contare cifre, lettere, altro
l := len(s)
for indice := 0; indice < l; indice++ {
r := rune(s[indice])
if unicode.IsDigit(r) {
cifre++
} else if unicode.IsLetter(r) {
lettere++
} else {
altri++
}
}
return
}
func isPalindrome(s string) bool {
// verificare che la prima parte sia uguale alla seconda ribaltata
l := len(s)
half := l / 2
// scorrerla fino a metà e confrontare carattere i-esimo con ...
for i := 0; i <= half; i++ {
//fmt.Println(string(s[i]), string(s[l-i-1]))
// se sono diversi, esco
if s[i] != s[l-i-1] {
return false
}
}
return true
}
package main
import (
"fmt"
"strconv"
)
func main() {
var data string
fmt.Print("data (in formato aa-mm-aaaa): ")
fmt.Scan(&data)
mm, _ := strconv.Atoi(data[3:5])
fmt.Println("il mese", mm, "ha", giorniInMese(mm), "giorni")
}
func giorniInMese(mese int) int {
var numGiorni int
switch mese {
case 1, 3, 5, 7, 8, 10, 12:
numGiorni = 31
case 4, 6, 9, 11:
numGiorni = 30
case 2:
numGiorni = 28
}
return numGiorni
}
package main
import "fmt"
func main() {
var op1, op2 int
fmt.Scan(&op1, &op2)
fmt.Println(operazioni(op1, op2))
}
// var nominate
func operazioni(n1, n2 int) (somma, prodotto, differenza int) {
somma = n1 + n2
prodotto = n1 * n2
differenza = n1 - n2
return
}
/* var non nominate
func operazioni(n1, n2 int) (int, int, int) {
somma := n1 + n2
prodotto := n1 * n2
differenza := n1 - n2
return somma, prodotto, differenza
}
*/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment