Skip to content
Open

lab9 #628

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions golang/Lab9/lab9.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package lab9

import (
"fmt"
)

type Task struct {
ID int
Description string
Completed bool
}

type TaskList struct {
Tasks []Task
}

func (t *Tasklist) AddTask(description string) {
id := len(t.Tasks) + 1
t.Tasks = append(t.Tasks, Task{ID: id, Description: description, Completed: false})
fmt.Printf("Task added: %d - %s", id, description)
}

func (t *Tasklist) CompleteTask(id int) {
for i := range t.Tasks {
if t.Tasks[i].ID == id {
t.Tasks[i].Completed = true
fmt.Printf("Task %d completed", id)
return
}
}
fmt.Printf("Task %d not found", id)
}

func (t *Tasklist) ShowTasks() {
for _, task := range t.Tasks {
status := "incomplete"
if task.Completed {
status = "completed"
}
fmt.Printf("%d: %s [%s]", task.ID, task.Description, status)
}
}

func RunLab9() {
taskList := &Tasklist{}
taskList.AddTask("Write a Go program")
taskList.AddTask("Test the program")
taskList.ShowTasks()
taskList.CompleteTask(1)
taskList.ShowTasks()
}
19 changes: 19 additions & 0 deletions golang/Lab9/task.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package lab9

type task struct {
ID int
Description string
Completed bool
}

func NewTask(id int, description string) Task {
return Task{
ID: id,
Description: description,
Completed: false,
}
}

func (t *Task) MarkAsComplete() {
t.Completed = true
}
34 changes: 34 additions & 0 deletions golang/Lab9/tasklist.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package lab9

import "fmt"

type Tasklist struct {
Tasks []Task
}

func (tl *Tasklist) Add(description string) {
id := len(tl.Tasks) + 1
tl.Tasks = append(tl.Tasks, NewTask(id, description))
fmt.Printf("Task added: %d - %s", id, description)
}

func (tl *Tasklist) Complete(id int) {
for i := range tl.Tasks {
if tl.Tasks[i].ID == id {
tl.Tasks[i].MarkAsComplete()
fmt.Printf("Task %d marked as complete", id)
return
}
}
fmt.Printf("Task %d not found", id)
}

func (tl *Tasklist) Display() {
for _, task := range tl.Tasks {
status := "Incomplete"
if task.Completed {
status = "Complete"
}
fmt.Printf("%d: %s [%s]", task.ID, task.Description, status)
}
}
2 changes: 0 additions & 2 deletions golang/go.mod
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
module isuct.ru/informatics2022

go 1.16

require github.com/stretchr/testify v1.8.1
9 changes: 7 additions & 2 deletions golang/main.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package main

import "fmt"
import (
"fmt"

lab9 "isuct.ru/informatics2022/lab9"
)

func main() {
fmt.Println("Hello world")
fmt.Println("Maksimov Daniil Andreevich")
lab9.RunLab9()
}