C/C++

Задачка на языке си. Что не так, Visual studio не хочет запускать?

Дан одномерный массив из N элементов. Найти количество положительных и сумму отрицательных элементов массива.

#include <stdio.h>

int main()
{
int kol_pol = 0, sum_otr = 0;


printf("vvedite razmer massiva: ");
int a;
scanf_s("%d", &a);

int N[a];

int i = 0;
while (i < a) {
scanf_s("%d", &N[i]);
i++;
}
int j = 0;
while (j < a) {

if (N[j] > 0) {
kol_pol++;
j++;
}
if (N[j] < 0) {
sum_otr = sum_otr + N[j];
j++;
}

if (N[j] == 0) {
j++;

}

}

printf("%d,%d", kol_pol, sum_otr);
return 0;
}
int N[a] - такое обьявление массива, если "а" не константа, не является стандарнтым и не все компиляторы его выполнят. Действуйте по стандарту. Либо обьявляйте статический массив int N[100] где 100 - константа предполагающая что больше этого размера пользователю не доступно. Либо выделяете динамическую память:
Добавить библиотеку
 #include  //для работы с динамической памятью 
заменить int N[a]; int i=0; на
 int* N = (int*)malloc(sizeof(int)*a); //выделение памяти указателю N
int i = 0;
перед return 0 вставить
 free(N); //освобождение памяти 
Владимир Скосарев
Владимир Скосарев
51 416
Лучший ответ
Возможно, ты компилируешь это компилятором C++, а не компилятором C.
На ваше «Автор вопроса посчитал, что ответ не является полезным»
я сделаю так;
«Автор ответа посчитал, что ответ не является полезным автору вопроса и поэтому стер код»
Нужно так писать:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int kol_pol = 0, sum_otr = 0;
printf("vvedite razmer massiva: ");
int a; scanf("%d", &a);
int N[a]; int i = 0;
while (i < a)
{
printf("\nN[%d] = ", i);
scanf("%d", &N[i]);
i++;
}
int j = 0;
while (j < a)
{
if (N[j] > 0) { kol_pol++; j++; }
if (N[j] < 0)
{ sum_otr = sum_otr + N[j]; j++; }
if (N[j] == 0) { j++; } }
printf("\n%d,%d", kol_pol, sum_otr);
system("pause");
return 0;
}
Umidjan Babakulyew
Umidjan Babakulyew
6 845