Я столкнулся с проблемой при инициализации массива в C. Я пытаюсь ввести переменную 'n' и объявить массив mark [n] с нулевым значением. Для этого я написал следующую часть программы.
int n,k,e,m,x;
scanf("%d %d %d %d", &n,&k,&e,&m);
int marks[n]={0};
, но выполнение программы генерирует следующие предупреждения и ошибки:
prog.c: In function ‘main’:
prog.c:10:6: error: variable-sized object may not be initialized
int marks[n]={0};
^~~
prog.c:10:20: warning: excess elements in array initializer
int marks[n]={0};
^
prog.c:10:20: note: (near initialization for ‘marks’)
Это вся программа:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int t;
scanf("%d",&t);
for (int z = 0; z < t; ++z)
{
int n,k,e,m,x;
scanf("%d %d %d %d", &n,&k,&e,&m);
int marks[n]={0};
/*gets the total marks of each students. mark of the last exam of the n-th student is not taken*/
for (int i = 0; i < n; ++i)
{
for(int j=0;j<e;j++)
{
if (i==n-1 && j==e-1)
{
break;
}
scanf("%d",&x);
marks[i]=marks[i]+x;
}
}
/*sorting*/
for (int i = 0; i < n-2; i++)
{
for(int j=i; j<n-2; j++)
{
if (marks[j]<marks[j+1])
{
int temp = marks[j];
marks[j]= marks[j+1];
marks[j+1]=temp;
}
}
}
/*prints the needed marks*/
x=marks[k-1]-marks[n-1];
printf("%d\n",x+1 );
}
return 0;
}
Моя цель - набрать n = количество кандидатов, k = количество мест в школе, e = количество экзаменов, m = максимально достижимые оценки за один экзамен. Я хочу знать, сколько баллов потребуется n-му студенту на его выпускном экзамене, чтобы быть допущенным к зачислению. Его оценка на последнем экзамене не используется в качестве входных данных в программе, и я хочу выяснить, сколько баллов ему потребуется на последнем экзамене. выпускной экзамен.
Как я могу его решить?