Поиск суммы элементов массива, расположенных после минимального элемента - C (СИ)
Формулировка задачи:
В общем ошибка такая: работает через раз, пропускает максимальный и вместо этого берет последнее отрицательное число и делает его минимумом
Помогите исправить ошибку
Листинг программы
- #include <stdio.h>
- #include <malloc.h>
- #include <conio.h>
- #include <locale.h>
- #include <stdlib.h>
- #include <time.h>
- int linpoisk(int mass[], int N);
- #define BORDER_HIGH 100
- #define BORDER_LOW -100
- int main()
- {
- setlocale(LC_ALL, "RUS");
- int N;
- int G = 0;
- int* mass;
- int i;
- printf("Введите кол-во эл-тов массива: ");
- scanf_s("%d", &N);
- mass = (int *)malloc(N * sizeof(int));
- srand((unsigned)(time(NULL)));
- printf("Заполните массив элементами:\n");
- for (i = 0; i < N; i++)
- {
- mass[i] = rand() % (BORDER_HIGH - BORDER_LOW + 1) + BORDER_LOW;
- printf("a[%d] = %d\n", i , mass[i]);
- }
- printf("Сумма равна : %d \n", linpoisk(mass, N));
- free(mass); // освобождение памяти
- system("pause");
- }
- int linpoisk(int mass[], int N)
- {
- int i_find ;
- int min;
- int sum = 0;
- i_find = 0;
- min = mass[0];
- for (int i = 0; i < N; i++)
- {
- if ( min > mass[i])
- i_find = i;
- }
- printf("min : %d \n", i_find);
- for (int i = i_find; i < N; i++)
- {
- sum += mass[i];
- }
- return sum;
- }
Решение задачи: «Поиск суммы элементов массива, расположенных после минимального элемента»
textual
Листинг программы
- i_find = 0;
- for (int i = 1; i < N; i++)
- {
- if ( mass[i_find] > mass[i])
- i_find = i;
- }
Объяснение кода листинга программы
- В переменной
i_find
хранится индекс минимального элемента массиваmass
. - Цикл
for
начинается с i = 1 и продолжается до i < N. - На каждой итерации цикла выполняется проверка: если значение элемента с индексом
i_find
больше значения текущего элемента массива, тоi_find
присваивается значение текущей итерации. - После завершения цикла, в переменной
i_find
будет храниться индекс минимального элемента массиваmass
. - Для получения суммы элементов, расположенных после минимального элемента, можно использовать следующий код: int sum = 0; for (int i = i_find + 1; i < N; i++) { sum += mass[i]; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д