Поиск суммы элементов массива, расположенных после минимального элемента - 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;
}

Объяснение кода листинга программы

  1. В переменной i_find хранится индекс минимального элемента массива mass.
  2. Цикл for начинается с i = 1 и продолжается до i < N.
  3. На каждой итерации цикла выполняется проверка: если значение элемента с индексом i_find больше значения текущего элемента массива, то i_find присваивается значение текущей итерации.
  4. После завершения цикла, в переменной i_find будет храниться индекс минимального элемента массива mass.
  5. Для получения суммы элементов, расположенных после минимального элемента, можно использовать следующий код: int sum = 0; for (int i = i_find + 1; i < N; i++) { sum += mass[i]; }

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы