Поиск непрерывной последовательности непрерывных чисел - C (СИ)
Формулировка задачи:
Объявить массив целых чисел и заполнить его случайными значениями. Размер массива и диапазон значений его элементов заданы в Вашем варианте индивидуального задания. В индивидуальных заданиях (см. приложение) указано также, какую обработку массива следует произвести.
Для всех вариантов задания следует иметь в виду следующее:
• 0 считается положительным числом, если в задании не оговорен какой-то другой его статус;
• когда речь идет о какой-то последовательности чисел, имеется в виду последовательность с длиной, большей 1;
• в тех случаях, когда задание требует выполнения каких-то вычислений, разрешается выполнять их с той точностью, которую обеспечивают операции целочисленной арифметики.
Решение задачи: «Поиск непрерывной последовательности непрерывных чисел»
textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include <Windows.h>
#define ARRAY_SIZE 100
#define LOWER_BORDER -100
#define HIGHER_BORDER 100
int main()
{
srand(time(NULL));
int *a, i, sum = 0, max_sum = 0;
BOOL start_flag = FALSE;
a = malloc(ARRAY_SIZE * sizeof(int));
for (i = 0; i < ARRAY_SIZE; i++) {
a[i] = (rand() % (HIGHER_BORDER - LOWER_BORDER + 1)) + LOWER_BORDER;
//printf("%d\n", a[i]);
}
for (i = 0; i < ARRAY_SIZE; i++) {
if (a[i] >= 0)
start_flag = TRUE;
else {
start_flag = FALSE;
sum = 0;
}
if (start_flag) {
sum += a[i];
start_flag = FALSE;
}
if (max_sum < sum)
max_sum = sum;
}
printf("Longest sum of positive elements is: %d\n", max_sum);
system("pause");
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявляются макросы для определения размера массива и границ значений, которые могут принимать случайные числа.
- Задаются начальные значения переменных: селектор случайной последовательности чисел, сумма, максимальная сумма и флаг начала последовательности.
- В цикле заполняется массив случайными числами.
- В цикле подсчитывается сумма положительных чисел, начиная с каждого числа массива, и проверяется, является ли эта сумма максимальной.
- Выводится сообщение с максимальной суммой положительных чисел.
- Требуется нажатие клавиши для выхода из программы.