Подсчитать максимальное количество подряд идущих отрицательных элементов - C (СИ) (70061)

Узнай цену своей работы

Формулировка задачи:

Дан одномерный массив А, состоящий из N элементов. Подсчитать максимальное количество подряд идущих отрицательных элементов. Появляется ошибка: Ошибка C2372 x: переопределение; различные типы косвенного обращения.Прошу помощи.
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. //Дан одномерный массив А, состоящий из N элементов. Подсчитать мак-
  4. //симальное количество подряд идущих отрицательных элементов.
  5.  
  6. int main()
  7. {
  8. setlocale(LC_ALL, "Rus");
  9. int n;
  10. int * x;
  11. printf_s ("Введите кол-во элементов");
  12. scanf_s ("%d",&n);
  13. int x[] = {n};
  14. for (int i = 0;i < n; i++)
  15. {
  16. printf_s("x[%d", i + 1, " ] = ");
  17. scanf_s("%d",x[i]);
  18. }
  19. int N = getpos(n, x);
  20. if (N <= 0)
  21. printf_s("В массиве только положитльные элементы");
  22. else
  23. {
  24. printf_s(" Максимальное кол-во отрицательных элементов %d",N);
  25. printf_s("\r\nСейчас программа закроется...\r\n");
  26. scanf_s("%d",&n);
  27. }
  28. int getpos(int n, int * x);
  29. {
  30. int i;
  31. int N = 0, M = 0;
  32. for (i = 0; i < n; i++)
  33. {
  34. if (x[i] < 0)
  35. break;
  36. }
  37. if (i < n)
  38. {
  39. while (i < n)
  40. {
  41. while (x[i] < 0)
  42. {
  43. M++;
  44. i++;
  45. }
  46. if (N < M)
  47. {
  48. N = M;
  49. M = 0;
  50. }
  51. i++;
  52. }
  53. }
  54. }
  55. system("PAUSE");
  56. return 0 ;
  57. }

Решение задачи: «Подсчитать максимальное количество подряд идущих отрицательных элементов»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <malloc.h>
  4. int getpos(int n, int *x)
  5. {
  6.     int i;
  7.     int N = 0, M = 0;
  8.     for (i = 0; i < n; i++)
  9.     {
  10.         if (x[i] < 0)
  11.             break;
  12.     }
  13.     if (i < n)
  14.     {
  15.         while (i < n)
  16.         {
  17.             while (x[i] < 0)
  18.             {
  19.                 M++;
  20.                 i++;
  21.             }
  22.             if (N < M)
  23.             {
  24.                 N = M;
  25.                 M = 0;
  26.             }
  27.             i++;
  28.         }
  29.     }
  30.     return N;
  31. }
  32. void main()
  33. {
  34.     int i;
  35.     int n;
  36.     int *x = 0;
  37.     int k;
  38. //    int kol-vo = 0;
  39.     int flag = 0;
  40.     setlocale(LC_ALL, "Rus");
  41.  
  42.     printf("Введите кол-во элементов в массиве ");
  43.     scanf("%d", &n);
  44.  
  45.     x = (int *)malloc(n*sizeof(int));
  46.  
  47.     for( i = 0; i < n; i++)
  48.     {
  49.         printf("x[%d]=", i+1);
  50.         scanf("%d", &x[i]);
  51.     }
  52.  
  53.     k = getpos(n, x);
  54.     printf(" Максимальное кол-во отрицательных элементов %d",k);
  55.  
  56.     free(x);
  57.     return 0;
  58. }

Объяснение кода листинга программы

  1. В функции getpos перебираются все элементы массива x с отрицательными значениями, и подсчитывается максимальное количество таких элементов.
  2. В функции main создается массив x размером n, и с помощью цикла for происходит заполнение его элементами.
  3. Затем вызывается функция getpos, передавая ей размер массива n и указатель на массив x.
  4. Результат работы функции getpos сохраняется в переменной k.
  5. С помощью функции printf выводится сообщение с результатом подсчета максимального количества отрицательных элементов.
  6. Выполняется операция free для освобождения памяти, выделенной под массив x.
  7. Программа возвращает 0, заканчивая свое выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы