Поиск суммы элементов массива, расположенных после минимального элемента - 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]; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д