76 lines
1.3 KiB
Go
76 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
func main() {
|
|
fmt.Println("Enter Number:")
|
|
var number int
|
|
_, err := fmt.Scanf("%d", &number)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
matrice := make([][]int, number+1)
|
|
|
|
|
|
for i := 0; i <= number; i++ {
|
|
matrice[i] = make([]int, number+1)
|
|
for j := 0; j <= number; j++ {
|
|
matrice[i][j] = (j * i) % number
|
|
}
|
|
}
|
|
|
|
// Save it
|
|
if err := csvExport(matrice); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// output it
|
|
fmt.Print("\t")
|
|
for i := 0; i <= number; i++ {
|
|
fmt.Print(i, "\t")
|
|
}
|
|
fmt.Println()
|
|
|
|
for rownumber, row := range matrice {
|
|
fmt.Print(rownumber, "\t")
|
|
for _, col := range row {
|
|
fmt.Print(col, "\t")
|
|
}
|
|
fmt.Println()
|
|
}
|
|
|
|
}
|
|
|
|
func csvExport(data [][]int) error {
|
|
file, err := os.Create("result.csv")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer file.Close()
|
|
|
|
writer := csv.NewWriter(file)
|
|
defer writer.Flush()
|
|
|
|
//Prepare
|
|
dataStrings := make([][]string, len(data))
|
|
for in := range data {
|
|
dataStrings[in] = make([]string, len(data[in]))
|
|
for in2, val2 := range data[in] {
|
|
dataStrings[in][in2] = strconv.Itoa(val2)
|
|
}
|
|
}
|
|
|
|
for _, value := range dataStrings {
|
|
if err := writer.Write(value); err != nil {
|
|
return err // let's return errors if necessary, rather than having a one-size-fits-all error handler
|
|
}
|
|
}
|
|
return nil
|
|
} |