Подсчитать максимальное количество подряд идущих отрицательных элементов - C (СИ) (71969)
Формулировка задачи:
Помогите, пожалуйста, написать программу на языке Си:
Дан одномерный массив А, состоящий из N элементов. Подсчитать максимальное количество подряд идущих отрицательных элементов.
Заранее большое спасибо!)
Решение задачи: «Подсчитать максимальное количество подряд идущих отрицательных элементов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100
int main()
{
int *ptr1, *ptr2, num1 = 0, num2 = 0;
int arr[MAX];
srand(time(NULL));
for (int i = 0; i < MAX; ++i) {
printf("[%4d]", arr[i] = -70 + rand() % 100);
if (i >= 8 && !(i % 8)) printf("\n");
}
printf("\n\n ");
for (int i = 0; i < MAX; ++i)
if (arr[i] < 0) {
if (++num1 == 1)
ptr1 = &arr[i];
}
else if (num1) {
if (num2 < num1) {
num2 = num1;
ptr2 = ptr1;
}
num1 = 0;
}
for (int i = ptr2 - arr; i < (ptr2 - arr) + num2; ++i)
printf("[%4d]", arr[i]);
printf("\n%d elements\n", num2);
return 0;
}
Объяснение кода листинга программы
В этом коде используется массив MAX, размером 100, который заполняется случайными числами от -70 до 30 с шагом 8. Затем код подсчитывает количество отрицательных чисел, и если это число больше 1, то он сохраняет указатель на первый элемент и количество элементов в переменной num2. Затем он выводит все элементы, начиная с num2 и заканчивая последним элементом в массиве. И в конце выводит количество элементов.