Ну, я написал код, который в основном делает:найти самую длинную отрицательную последовательность в динамическом массиве
Просит длину массива
входа пользователя массива в * р
Функция longestNeg проверяет самую длинную отрицательную последовательность.
Что он должен делать: Возвращение дольше обратной последовательности с его значениями.
Проблема: в функции longestNeg (бросает исключение)
if (*arr < 0) {
counter++;
}
Вопрос: Почему это происходит?
Вопрос2: Будет ли while (arr < arr + n)
работать?
Edit3:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void longestNeg(int *arr, int n);
int main()
{
int *arr1, n,num = 0,*p;
printf("Please enter the size of the array: ");
scanf("%d", &n);
arr1 = (int*)malloc(n * sizeof(int));
if (arr1 == NULL)
printf("Not enough memory\n");
else printf("Array was allocated!\n");
for (p = arr1; p < arr1 + n; p++)
{
scanf("%d", p);
}
longestNeg(p - n, n);
free(arr1);
getch();
}
void longestNeg(int *arr, int n)
{
int counter = 0, temp = 0, *p;
for (p = arr; p < arr + n; p++)
{
if (*p < 0) {
counter++;
}
else if (counter > temp) {
temp = counter;
counter = 0;
}
else
counter = 0;
}
if (counter != 0)
for (p = arr; p < arr + counter; p++)
{
printf("%d ", *p);
}
else
printf("No neg numbers.");
}
Что такое «самая длинная отрицательная последовательность»? –
Вы хотите вернуть длину самой длинной отрицательной последовательности, индексы первой и последней или фактической последовательности? – erip
@erip Фактическая последовательность. редактирование –