package main

import (
	"fmt"
	"log"
	"os"
	//"time"
)

var notas []float64
var num float64
var choice int

func main() {
	fmt.Print("\033[H\033[2J")

	msg()
	options()
}

func options() {
	for {

		if _, err := fmt.Scanln(&choice); err != nil {
			log.Print("Something failed")
		}

		if choice == 0 {
			return
		}

		switch choice {
		case 1:
			addVec()
		case 2:
			showResults()
		case 3:
			fmt.Println("Have a nice day!")
			os.Exit(0)
		default:
			fmt.Print("\033[H\033[2J")
			fmt.Printf("[-] ERROR: invalid input\n\n")
			fmt.Printf("[1] Add to vector\n")
			fmt.Printf("[2] View results\n")
			fmt.Printf("[3] Exit\n")
			fmt.Printf("\nPlease, select your choice: ")
		}
	}

}

// There is no saving this codebase, it has become so convoluted I can barely comprehend anything anymore

func msg() {
	fmt.Print("\033[H\033[2J")
	fmt.Printf("[1] Add to vector\n")
	fmt.Printf("[2] View results\n")
	fmt.Printf("[3] Exit\n")

	fmt.Printf("\nPlease, select your choice: ")

}

func addVec() {
	fmt.Print("\033[H\033[2J")
	fmt.Printf("Which number would you like to add to the vector?\nNumber: ")
	fmt.Scanln(&num)
	if num >= 0.001 && num <= 10 {

	} else {
		msg()
		fmt.Printf("\nERROR: Invalid number\nChoice: ")
		return
	}
	notas = append(notas, num)
	//time.Sleep(2 * time.Second)
	//time.Sleep(2 * time.Second)
	msg()
	fmt.Printf("\nYou have added the number %v!\nChoice: ", num)
	num = 0
}

func showResults() {
	//time.Sleep(2 * time.Second)
	msg()
	min := notas[0]
	max := notas[0]
	for _, v := range notas {
		if v < min {
			min = v
		}
	}
	for _, v := range notas {
		if v > max {
			max = v
		}
	}
	fmt.Printf("\nThese are your current grades: \n")
	fmt.Printf("%.2f\n", notas)
	fmt.Printf("Lowest grade: %v\n", min)
	fmt.Printf("Highest grade: %v\n", max)
	fmt.Printf("Choice: ")
}