Подсчитать максимальное количество подряд идущих отрицательных элементов - 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, заканчивая свое выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д