diff --git a/students/emrekp/problems.csv b/students/emrekp/problems.csv new file mode 100644 index 0000000..948e377 --- /dev/null +++ b/students/emrekp/problems.csv @@ -0,0 +1,13 @@ +5+5,10 +7+3,10 +1+1,2 +8+3,11 +1+2,3 +"Surname of 9th President of Turkey","Demirel" +3+1,4 +1+4,5 +5+1,6 +"First name of first woman PM of UK","Margaret" +3+3,6 +2+4,6 +5+2,7 diff --git a/students/emrekp/quiz.go b/students/emrekp/quiz.go new file mode 100644 index 0000000..ae855a5 --- /dev/null +++ b/students/emrekp/quiz.go @@ -0,0 +1,60 @@ +package main + +import ( + "encoding/csv" + "flag" + "fmt" + "io/ioutil" + "log" + "path/filepath" + "strings" + "time" +) + +func startTime(timer time.Timer, duration time.Duration) { + <-timer.C + fmt.Println(duration, "doldu") +} + +func main() { + filename := flag.String("file", "problems.csv", "Questions file") + timelimit := flag.Int("time", 30, "Time limit of quiz in seconds") + flag.Parse() + + filePath, pathErr := filepath.Abs(*filename) + if pathErr != nil { + log.Fatal("file not found. check if it exists again.") + } + + remainTime := time.Duration(*timelimit) * time.Second + fmt.Println("Press return to start time (", remainTime, ")") + fmt.Scanln() //and time starts + + timer := time.NewTimer(remainTime) + go startTime(*timer, remainTime) + + csvF, csvErr := ioutil.ReadFile(filePath) + if csvErr != nil { + log.Fatal("error reading file: " + csvErr.Error()) + } + + probs, probErr := csv.NewReader(strings.NewReader(string(csvF))).ReadAll() + if probErr != nil { + log.Fatal("error on CSV format: " + probErr.Error()) + } + + var answer string + var trues, total int + + for i, soru := range probs { + fmt.Printf("%d. soru: %s = ", i+1, soru[0]) + fmt.Scan(&answer) + if answer == soru[1] { + trues++ + } + total++ + } + + fmt.Printf("True answers: %d\n", trues) + fmt.Printf("Total questions: %d\n", total) +}