Подсчитать максимальное количество подряд идущих отрицательных элементов - C (СИ) (70061)
Формулировка задачи:
Дан одномерный массив А, состоящий из N элементов. Подсчитать максимальное количество подряд идущих отрицательных элементов.
Появляется ошибка:
Ошибка C2372 x: переопределение; различные типы косвенного обращения.Прошу помощи.
Листинг программы
- #include <stdio.h>
- #include <locale.h>
- //Дан одномерный массив А, состоящий из N элементов. Подсчитать мак-
- //симальное количество подряд идущих отрицательных элементов.
- int main()
- {
- setlocale(LC_ALL, "Rus");
- int n;
- int * x;
- printf_s ("Введите кол-во элементов");
- scanf_s ("%d",&n);
- int x[] = {n};
- for (int i = 0;i < n; i++)
- {
- printf_s("x[%d", i + 1, " ] = ");
- scanf_s("%d",x[i]);
- }
- int N = getpos(n, x);
- if (N <= 0)
- printf_s("В массиве только положитльные элементы");
- else
- {
- printf_s(" Максимальное кол-во отрицательных элементов %d",N);
- printf_s("\r\nСейчас программа закроется...\r\n");
- scanf_s("%d",&n);
- }
- int getpos(int n, int * x);
- {
- int i;
- int N = 0, M = 0;
- for (i = 0; i < n; i++)
- {
- if (x[i] < 0)
- break;
- }
- if (i < n)
- {
- while (i < n)
- {
- while (x[i] < 0)
- {
- M++;
- i++;
- }
- if (N < M)
- {
- N = M;
- M = 0;
- }
- i++;
- }
- }
- }
- system("PAUSE");
- return 0 ;
- }
Решение задачи: «Подсчитать максимальное количество подряд идущих отрицательных элементов»
textual
Листинг программы
- #include <stdio.h>
- #include <locale.h>
- #include <malloc.h>
- int getpos(int n, int *x)
- {
- int i;
- int N = 0, M = 0;
- for (i = 0; i < n; i++)
- {
- if (x[i] < 0)
- break;
- }
- if (i < n)
- {
- while (i < n)
- {
- while (x[i] < 0)
- {
- M++;
- i++;
- }
- if (N < M)
- {
- N = M;
- M = 0;
- }
- i++;
- }
- }
- return N;
- }
- void main()
- {
- int i;
- int n;
- int *x = 0;
- int k;
- // int kol-vo = 0;
- int flag = 0;
- setlocale(LC_ALL, "Rus");
- printf("Введите кол-во элементов в массиве ");
- scanf("%d", &n);
- x = (int *)malloc(n*sizeof(int));
- for( i = 0; i < n; i++)
- {
- printf("x[%d]=", i+1);
- scanf("%d", &x[i]);
- }
- k = getpos(n, x);
- printf(" Максимальное кол-во отрицательных элементов %d",k);
- free(x);
- return 0;
- }
Объяснение кода листинга программы
- В функции
getpos
перебираются все элементы массиваx
с отрицательными значениями, и подсчитывается максимальное количество таких элементов. - В функции
main
создается массивx
размеромn
, и с помощью циклаfor
происходит заполнение его элементами. - Затем вызывается функция
getpos
, передавая ей размер массиваn
и указатель на массивx
. - Результат работы функции
getpos
сохраняется в переменнойk
. - С помощью функции
printf
выводится сообщение с результатом подсчета максимального количества отрицательных элементов. - Выполняется операция
free
для освобождения памяти, выделенной под массивx
. - Программа возвращает 0, заканчивая свое выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д