From 36b3208dce1445db37b6f0be7175cd90da6f65f7 Mon Sep 17 00:00:00 2001 From: Sorrow-source Date: Thu, 26 Dec 2024 02:31:44 +0300 Subject: [PATCH] lab7 --- golang/lab7/Clothes.go | 20 ++++++++++++++++++++ golang/lab7/Food.go | 19 +++++++++++++++++++ golang/lab7/Product.go | 15 +++++++++++++++ golang/lab7/RunLab.go | 21 +++++++++++++++++++++ golang/lab7/Vehicle.go | 20 ++++++++++++++++++++ golang/main.go | 3 +++ 6 files changed, 98 insertions(+) create mode 100644 golang/lab7/Clothes.go create mode 100644 golang/lab7/Food.go create mode 100644 golang/lab7/Product.go create mode 100644 golang/lab7/RunLab.go create mode 100644 golang/lab7/Vehicle.go diff --git a/golang/lab7/Clothes.go b/golang/lab7/Clothes.go new file mode 100644 index 00000000..ffe8758d --- /dev/null +++ b/golang/lab7/Clothes.go @@ -0,0 +1,20 @@ +package lab7 + +import "fmt" + +type Clothes struct { + Name string + Price float64 + Size string + Color string +} + +func (c *Clothes) make_sale(discount float64) { + c.Price = c.Price * (1 - discount/100) +} +func (c *Clothes) get_price() float64 { + return c.Price +} +func (c *Clothes) get_productInfo() string { + return fmt.Sprintf("Name: %s, Size: %s, Color: %s, Price: %.2f", c.Name, c.Size, c.Color, c.Price) +} diff --git a/golang/lab7/Food.go b/golang/lab7/Food.go new file mode 100644 index 00000000..2e75d8a7 --- /dev/null +++ b/golang/lab7/Food.go @@ -0,0 +1,19 @@ +package lab7 + +import "fmt" + +type Food struct { + Name string + Weight float64 + Price float64 +} + +func (f *Food) make_sale(discount float64) { + f.Price = f.Price * (1 - discount/100) +} +func (f *Food) get_price() float64 { + return f.Price +} +func (f *Food) get_productInfo() string { + return fmt.Sprintf("Name: %s, Weight: %.2f, Price: %.2f", f.Name, f.Weight, f.Price) +} diff --git a/golang/lab7/Product.go b/golang/lab7/Product.go new file mode 100644 index 00000000..aafafba4 --- /dev/null +++ b/golang/lab7/Product.go @@ -0,0 +1,15 @@ +package lab7 + +type Product interface { + make_sale(discount float64) + get_price() float64 + get_productInfo() string +} + +func get_priceAllProducts(products []Product) float64 { + var totalCost float64 + for _, product := range products { + totalCost += product.get_price() + } + return totalCost +} diff --git a/golang/lab7/RunLab.go b/golang/lab7/RunLab.go new file mode 100644 index 00000000..66c3a000 --- /dev/null +++ b/golang/lab7/RunLab.go @@ -0,0 +1,21 @@ +package lab7 + +import "fmt" + +func CompleteLab7() { + product1 := &Clothes{Name: "Худи", Price: 1200, Size: "XL", Color: "Black"} + product1.make_sale(15) + product2 := &Food{Name: "Ананас", Weight: 1000, Price: 200} + product2.make_sale(25) + product3 := &Vehicle{Brand: "Mitsubishi", Model: "ASX", Color: "Orange", Price: 1400000} + product3.make_sale(5) + + products := []Product{product1, product2, product3} + + for _, product := range products { + fmt.Println(product.get_productInfo()) + } + + totalPrice := get_priceAllProducts(products) + fmt.Printf("Общая стоимость: %.2f\n", totalPrice) +} diff --git a/golang/lab7/Vehicle.go b/golang/lab7/Vehicle.go new file mode 100644 index 00000000..4b50a1bf --- /dev/null +++ b/golang/lab7/Vehicle.go @@ -0,0 +1,20 @@ +package lab7 + +import "fmt" + +type Vehicle struct { + Brand string + Model string + Color string + Price float64 +} + +func (v *Vehicle) make_sale(discount float64) { + v.Price = v.Price * (1 - discount/100) +} +func (v *Vehicle) get_price() float64 { + return v.Price +} +func (v *Vehicle) get_productInfo() string { + return fmt.Sprintf("Brand: %s, Model: %s, Color: %s, Price: %.2f", v.Brand, v.Model, v.Color, v.Price) +} diff --git a/golang/main.go b/golang/main.go index 364ef8bd..3bd0fd15 100644 --- a/golang/main.go +++ b/golang/main.go @@ -6,10 +6,13 @@ import ( "isuct.ru/informatics2022/lab4" "isuct.ru/informatics2022/lab6" + + "isuct.ru/informatics2022/lab7" ) func main() { fmt.Println("Кулибаба Никита Андреевич") lab4.CompleteLab4() lab6.CompleteLab6() + lab7.CompleteLab7() }