Код запрашивает количество вводов, затем на каждом вводе количество чисел, затем запрашивает сами числа и вычисляет сумму их квадратов. Но программа работает не так как я хотел. Сейчас она выдает ответ в процессе ввода данных. То есть должно быть 3 ввода чисел и 3 ответа, я ввожу данные для первого ответа и программа сразу как получает все данные выдает ответ и ждет данные для следующего ответа. А мне нужно, чтобы программа выдала ответы по очереди после всех вводов, пример того как я хочу:
Input:
2 // Количество вводов, столько же ответов должно быть
3 // Количество чисел в первом вводе
1 2 3 // сами числа, программа должны вычислить сумму их квадратов
2 // кол-о чисел во втором вводе
2 3 // сами числа
Output:
14 // ответ на первый ввод
13 // ответ на второй ввод
Сама программа:
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Println("input number")
n, _ := reader.ReadString('\n')
n = strings.TrimRight(n, "\r\n")
test_cases, err := strconv.Atoi(n)
if err != nil {
fmt.Println(err)
}
process_test_case(test_cases, reader)
}
func process_test_case(test_cases int, reader *bufio.Reader) {
if test_cases != 0 {
fmt.Println("int number")
_, _ = reader.ReadString('\n')
fmt.Println("integers")
input, _:= reader.ReadString('\n')
input = strings.TrimRight(input, "\r\n")
fmt.Println(input)
arr := strings.Split(input, " ")
ans := process_array(arr, 0)
fmt.Println("answer =", ans)
test_cases -= 1
process_test_case(test_cases, reader)
}
}
func process_array(arr []string, result int) int {
num, _ := strconv.Atoi(arr[0])
if len(arr) > 1 {
next := arr[1:]
if num < 0 {
num = 0
}
result = num * num + process_array(next, result)
return result
} else {
if num >= 0 {
return num * num
}
return 0
}
}