Третья семестровка.

Добавлена валидация и приведён код в порядок.