В динамический двумерный массив неверно вводятся элементы
Задача: дана группа из N учащихся. Для них известны оценки по четырём предметам, и нужно найти их среднее арифметическое (суммирование оформить ИМЕННО в подпрограмме).
#include "iostream"
#include "stdlib.h"
#include "math.h"
void arithmetical_mean(int(arr)[4], int i) {
double avg = (arr[1] + arr[2] + arr[3] + arr[0]) / 4;
printf("Student %d: %.2lf", i, avg);
}
int main(int argc, char* argv[])
{
setlocale(LC_CTYPE, "RUSSIAN");
int N;
printf("Введите N");
scanf_s("%d", &N);
int **grades =(int**)calloc(N, sizeof(int*));
for (int i = 0; i < N; i++)
grades[i] = (int*)calloc(4, sizeof(int));
printf("Введите оценки: Математика");
for (int i = 1; i <= N; i++)
scanf_s("%d", &grades[i,0]);
printf("Введите оценки: Физика");
for (int i = 1; i <= N; i++)
scanf_s("%d", &grades[i,1]);
printf("Введите оценки: Химия");
for (int i = 1; i <= N; i++)
scanf_s("%d", &grades[i,2]);
printf("Введите оценки: Информатика");
for (int i = 1; i <= N; i++)
scanf_s("%d", &grades[i,3]);
for (int i = 1; i <= N; i++)
printf("DEBUG: %d %d %d %d\n", grades[i,0], grades[i,1], grades[i,2], grades[i,3]);
for (int i = 1; i <= N; i++)
arithmetical_mean(grades[N], i);
return 0;
}
Проблема становится заметной на строке printf("DEBUG: ..., где выводятся все элементы массива. Например, N=3, и из первого цикла вводятся числа 1 2 3, из второго - 4 5 6, из третьего - 5 8 3, из четвёртого - 3 1 4, то выводятся 3 одинаковых строки - DEBUG: 3 6 3 4 (т.е. последние элементы каждого).
В чём может быть проблема? Буду благодарен, если кто заметит недочеты.