Задача на последовательностив массиве - C (СИ)
Формулировка задачи:
Дан целочисленный массив из 30 элементов. Опишите алгоритм, который находит и выводит сумму наибольшей по длине возрастающей последовательности подряд идущих элементов. Если таких последовательностей несколько, можно вывести любую из них.
Помогите найти ошибку.Выводит огромадное число.Заранее благодарен.
Теперь выводит 4
#include <stdio.h> main(){ int dig[10]; int i,sum,dlina,dlinamax,maxsum; for (i = 0 ; i <= 4 ;i++){ scanf("%d",&dig[i]); } for ( i = 0 ; i <= 9 ; i++){ dlina = 1; sum = dig[i]; if (dig[i] < dig[i + 1]){ sum += dig[i + 1]; dlina++; } if (dlina > dlinamax){ dlinamax = dlina; maxsum = sum; } } printf("Сумма самой длинной возрастающей последовательности: %d\n",maxsum); }
#include <stdio.h> main(){ int dig[10]; int i,sum,dlina,dlinamax,maxsum; for (i = 0 ; i <= 9 ;i++){ scanf("%d",&dig[i]); } maxsum = 0; dlinamax = 0; for ( i = 0 ; i <= 9 ; i++){ dlina = 1; sum = dig[i]; if (dig[i] > dig[i - 1]){ sum += dig[i]; dlina++; } if (dlina > dlinamax){ dlinamax = dlina; maxsum = sum; } } printf("Сумма самой длинной возрастающей последовательности: %d\n",maxsum); }
Решение задачи: «Задача на последовательностив массиве»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define NUMBER_OF_ELEMENTS 30 int main(void) { int array[NUMBER_OF_ELEMENTS], maxSentenceStartIndex, maxSentenceLength, currentSentenceStartIndex, currentSentenceLength, i, sum; srand(time(NULL)); for ( i = 0; i < NUMBER_OF_ELEMENTS; ++i ) array[i] = rand() % 10; maxSentenceStartIndex = currentSentenceStartIndex = 0; maxSentenceLength = currentSentenceLength = 1; while ( currentSentenceStartIndex < NUMBER_OF_ELEMENTS ) { for ( i = currentSentenceStartIndex + 1; i < NUMBER_OF_ELEMENTS && array[i] > array[i-1]; ++i ) ++currentSentenceLength; if ( maxSentenceLength < currentSentenceLength ) { maxSentenceStartIndex = currentSentenceStartIndex; maxSentenceLength = currentSentenceLength; } currentSentenceStartIndex = i; currentSentenceLength = 1; } for ( sum = array[maxSentenceStartIndex], i = maxSentenceStartIndex + 1; i - maxSentenceStartIndex < maxSentenceLength; ++i ) sum += array[i]; printf("Array:\n"); for ( i = 0; i < NUMBER_OF_ELEMENTS; ++i ) printf("%d ", array[i]); printf("\nThe first maximum length sentence of progressive elements starts at index:\n%d (value of %d, length of %d elements)\n", maxSentenceStartIndex, array[maxSentenceStartIndex], maxSentenceLength); printf("Sum of this sentence:\n%d\n", sum); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем количество элементов в массиве
- Инициализируем переменные для хранения индексов и длин последовательностей
- Инициализируем генератор случайных чисел
- Заполняем массив случайными числами
- Находим индекс и длину максимальной последовательности
- Находим сумму максимальной последовательности
- Выводим массив на экран
- Выводим информацию о первой максимальной последовательности
- Выводим сумму максимальной последовательности
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д