ЕСЛИ У ВАС ЕСТЬ ИДЕЯ, МЕЧТА ИЛИ ЗАДАЧА — ДАВАЙТЕ ВОПЛОТИМ ЕЁ В ЖИЗНЬ!
class Task
attr_accessor :description, :completed
def initialize(description)
@description = description
@completed = false
end
def mark_complete
@completed = true
end
def to_s
"[#{@completed ? 'x' : ' '}] #{description}"
end
end
class TodoList
def initialize
@tasks = []
end
def add_task(description)
task = Task.new(description)
@tasks << task
puts "Задача '#{description}' добавлена."
end
def complete_task(index)
if valid_index?(index)
@tasks[index].mark_complete
puts "Задача #{@tasks[index].description} помечена как выполненная."
else
puts "Ошибка: неверный индекс задачи."
end
end
def show_tasks
if @tasks.empty?
puts "Список задач пуст."
else
puts "\nВаши задачи:"
@tasks.each_with_index do |task, index|
puts "#{index}. #{task}"
end
end
end
def menu
loop do
puts "\nВыберите действие:"
puts "1. Показать задачи"
puts "2. Добавить задачу"
puts "3. Выполнить задачу"
puts "4. Выйти"
choice = gets.chomp
case choice
when "1"
show_tasks
when "2"
print "Введите описание задачи: "
desc = gets.chomp
add_task(desc)
when "3"
print "Введите номер задачи для выполнения: "
index = gets.chomp.to_i
complete_task(index)
when "4"
puts "Выход из программы."
break
else
puts "Неверный выбор. Попробуйте снова."
end
end
end
private
def valid_index?(index)
index.between?(0, @tasks.size - 1)
end
end
# Запуск программы
list = TodoList.new
list.add_task("Купить продукты")
list.add_task("Почитать книгу")
list.add_task("Сделать зарядку")
list.show_tasks
list.menu