Определить длину наибольшего возрастающего участка последовательности - C (СИ)
Формулировка задачи:
Определить длину наибольшего возрастающего участка последовательности.
Вывести на экран кол-во элементов и сами элементы.
Очень нужно.
Решение задачи: «Определить длину наибольшего возрастающего участка последовательности»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); size_t count = 0; while (count == 0) { printf("count: "); scanf("%u", &count); } int* array = (int*) malloc(sizeof(int) * count); size_t i; for (i = 0; i < count; ++i) { array[i] = rand() % 100; printf("%d ", array[i]); } printf("\n"); unsigned maxBegin = 0; unsigned maxLength = 1; unsigned curBegin = 0; unsigned curLength = 1; for (i = 0; i < count-1; ++i) { if (array[i] < array[i+1]) { curLength++; } else { if (curLength > maxLength) { maxBegin = curBegin; maxLength = curLength; } curBegin = i+1; curLength = 1; } } printf("begin in pos = %d\nlength sequence = %d\n", maxBegin+1, maxLength); for (i = 0; i < maxLength; ++i) { printf("%d ", array[i + maxBegin]); } printf("\n"); free(array); system("pause"); return 0; }
Объяснение кода листинга программы
В этом коде:
- Сначала мы инициализируем переменную count, которая представляет собой количество элементов в массиве. Мы используем функцию scanf для считывания этого значения с помощью клавиатуры.
- Затем мы выделяем память под массив array с помощью функции malloc.
- Мы заполняем массив случайными целыми числами от 0 до 99 с помощью функции rand.
- Мы начинаем с цикла, который проходит через каждый элемент массива, начиная со второго, чтобы проверить, является ли текущий элемент больше следующего. Если это так, мы увеличиваем длину текущего участка на 1.
- Если текущий элемент больше следующего, мы обновляем длину текущего участка до 1 и сбрасываем его начало до индекса текущего элемента + 1.
- Если длина текущего участка больше максимальной длины, мы обновляем максимальную длину и сбрасываем начало текущего участка до индекса начала максимального участка.
- После завершения цикла мы выводим на экран начало и длину наибольшего участка.
- Затем мы выводим на экран элементы массива, начиная с индекса начала наибольшего участка и заканчивая индексом начала наибольшего участка + длина наибольшего участка - 1.
- Наконец, мы освобождаем память, выделенную под массив, с помощью функции free, и приостанавливаем выполнение программы с помощью функции system.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д