Projet – Calculateur de géométrie
Contexte
Section intitulée « Contexte »Construisez un programme en ligne de commande qui calcule l’aire et le périmètre de différentes formes (cercle, rectangle, triangle). Utilisez des structures, des méthodes, la gestion d’erreur et les entrées utilisateur.
Ce projet combine :
- Structures et méthodes
- Gestion d’erreur (erreurs personnalisées)
- Boucle de lecture utilisateur
- Instruction
switch
Code pas à pas
Section intitulée « Code pas à pas »package main
import ( "bufio" "fmt" "math" "os" "strconv" "strings")
// Cercletype Cercle struct { Rayon float64}
func (c Cercle) Aire() float64 { return math.Pi * c.Rayon * c.Rayon}
func (c Cercle) Perimetre() float64 { return 2 * math.Pi * c.Rayon}
// Rectangletype Rectangle struct { Largeur, Hauteur float64}
func (r Rectangle) Aire() float64 { return r.Largeur * r.Hauteur}
func (r Rectangle) Perimetre() float64 { return 2 * (r.Largeur + r.Hauteur)}
// Triangle équilatéraltype Triangle struct { Cote float64}
func (t Triangle) Aire() float64 { return (math.Sqrt(3) / 4) * t.Cote * t.Cote}
func (t Triangle) Perimetre() float64 { return 3 * t.Cote}
func main() { lecteur := bufio.NewReader(os.Stdin)
fmt.Println("Calculateur de géométrie") fmt.Println("Formes disponibles : cercle, rectangle, triangle") fmt.Print("Entrez la forme : ") forme, _ := lecteur.ReadString('\n') forme = strings.TrimSpace(strings.ToLower(forme))
switch forme { case "cercle": fmt.Print("Entrez le rayon : ") rStr, _ := lecteur.ReadString('\n') r, err := strconv.ParseFloat(strings.TrimSpace(rStr), 64) if err != nil || r <= 0 { fmt.Println("Rayon invalide") return } c := Cercle{Rayon: r} fmt.Printf("Aire : %.2f, Périmètre : %.2f\n", c.Aire(), c.Perimetre())
case "rectangle": fmt.Print("Entrez la largeur : ") lStr, _ := lecteur.ReadString('\n') l, err1 := strconv.ParseFloat(strings.TrimSpace(lStr), 64) fmt.Print("Entrez la hauteur : ") hStr, _ := lecteur.ReadString('\n') h, err2 := strconv.ParseFloat(strings.TrimSpace(hStr), 64) if err1 != nil || err2 != nil || l <= 0 || h <= 0 { fmt.Println("Dimensions invalides") return } rect := Rectangle{Largeur: l, Hauteur: h} fmt.Printf("Aire : %.2f, Périmètre : %.2f\n", rect.Aire(), rect.Perimetre())
case "triangle": fmt.Print("Entrez la longueur du côté : ") cStr, _ := lecteur.ReadString('\n') c, err := strconv.ParseFloat(strings.TrimSpace(cStr), 64) if err != nil || c <= 0 { fmt.Println("Longueur de côté invalide") return } t := Triangle{Cote: c} fmt.Printf("Aire : %.2f, Périmètre : %.2f\n", t.Aire(), t.Perimetre())
default: fmt.Println("Forme inconnue") }}Exemple d’interaction
Section intitulée « Exemple d’interaction »Calculateur de géométrieFormes disponibles : cercle, rectangle, triangleEntrez la forme : cercleEntrez le rayon : 5Aire : 78.54, Périmètre : 31.42Autre exemple
Section intitulée « Autre exemple »Entrez la forme : rectangleEntrez la largeur : 4Entrez la hauteur : 7Aire : 28.00, Périmètre : 22.00