diff --git a/golang/lab7/Drink.go b/golang/lab7/Drink.go new file mode 100644 index 00000000..9eb3c2a6 --- /dev/null +++ b/golang/lab7/Drink.go @@ -0,0 +1,31 @@ +package lab7 + +import ( + "fmt" +) + +type Drink struct { + Name string + Volume string + Price float64 +} + +func (d Drink) GetInfo() { + fmt.Println("В магазине продаётся", d.Name, "объёмом", d.Volume, ", ценой", d.Price, "руб.") +} + +func (d Drink) GetPrice() float64 { + return d.Price +} + +func (d *Drink) SetDiscount(x float64) { + (*d).Price = (d.Price / 100) * (100 - x) +} + +func (d *Drink) EditPrice(x float64) { + (*d).Price = x +} + +func (d *Drink) EditDescription(x string) { + (*d).Volume = x +} diff --git a/golang/lab7/Lipstick.go b/golang/lab7/Lipstick.go new file mode 100644 index 00000000..ad52c1c2 --- /dev/null +++ b/golang/lab7/Lipstick.go @@ -0,0 +1,31 @@ +package lab7 + +import ( + "fmt" +) + +type Lipstick struct { + Brand string + Color string + Price float64 +} + +func (l Lipstick) GetInfo() { + fmt.Println("В магазине продаётся", l.Color, l.Brand, "ценой", l.Price, "руб.") +} + +func (l Lipstick) GetPrice() float64 { + return l.Price +} + +func (l *Lipstick) SetDiscount(x float64) { + (*l).Price = (l.Price / 100) * (100 - x) +} + +func (l *Lipstick) EditPrice(x float64) { + (*l).Price = x +} + +func (l *Lipstick) EditDescription(x string) { + (*l).Color = x +} diff --git a/golang/lab7/Toy.go b/golang/lab7/Toy.go new file mode 100644 index 00000000..f6223773 --- /dev/null +++ b/golang/lab7/Toy.go @@ -0,0 +1,29 @@ +package lab7 + +import "fmt" + +type Toy struct { + Hero string + Size string + Price float64 +} + +func (t Toy) GetInfo() { + fmt.Println("В магазине продаётся", t.Hero, "размером", t.Size, ", ценой", t.Price, "руб.") +} + +func (t Toy) GetPrice() float64 { + return t.Price +} + +func (t *Toy) SetDiscount(x float64) { + (*t).Price = (t.Price / 100) * (100 - x) +} + +func (t *Toy) EditPrice(x float64) { + (*t).Price = x +} + +func (t *Toy) EditDescription(x string) { + (*t).Size = x +} diff --git a/golang/lab7/lab7.go b/golang/lab7/lab7.go new file mode 100644 index 00000000..eb4851aa --- /dev/null +++ b/golang/lab7/lab7.go @@ -0,0 +1,48 @@ +package lab7 + +import ( + "fmt" +) + +type Product interface { + GetInfo() + GetPrice() float64 + SetDiscount(float64) + EditPrice(float64) + EditDescription(string) +} + +func CalculatePrice(purchase []Product) float64 { + var total float64 = 0 + for _, price := range purchase { + total += price.GetPrice() + } + return total +} + +func RunLab7() { + var drink Product = &Drink{"кола", "1.95 л", 160} + var toy Product = &Toy{"котик", "25 см", 1650} + var lipstick Product = &Lipstick{"NARS", "бардовая", 4700} + var purchase []Product = []Product{drink, toy, lipstick} + + drink.GetInfo() + toy.GetInfo() + lipstick.GetInfo() + + total := CalculatePrice(purchase) + fmt.Println("Общая стоимость товара:", total) + + drink.EditPrice(190) + toy.EditDescription("1 м") + toy.SetDiscount(10) + lipstick.SetDiscount(5) + lipstick.EditDescription("алая") + + drink.GetInfo() + toy.GetInfo() + lipstick.GetInfo() + + total = CalculatePrice(purchase) + fmt.Println("Общая стоимость товара:", total) +} diff --git a/golang/main.go b/golang/main.go index 5ec5d29a..79f3d03d 100644 --- a/golang/main.go +++ b/golang/main.go @@ -7,10 +7,13 @@ import ( "isuct.ru/informatics2022/lab4" "isuct.ru/informatics2022/lab6" + "isuct.ru/informatics2022/lab7" ) func main() { fmt.Println("Мошкова Елизавета Алексеевна ") lab6.RunLab6() + lab4.RunLab4() + lab7.RunLab7() lab4.RunLab4() }