Динамические массивы: подсчет суммы элементов после минимального по модулю элемента - C (СИ)
Формулировка задачи:
Добрый день всем!
Прошу помощи - не могу найти ошибку в коде, неправильно считает сумму элементов после минимального по модулю элемента. Спасибо откликнувшимся заранее.
Условие задания: В одномерном массиве, состоящем из n вводимых с клавиатуры элементов, вычислить Сумму модулей элементов массива, расположенных после минимального по модулю элемента;
Код С:
#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <locale.h>
#include <math.h>
#include <malloc.h>
void mf(double*, int);
void main() {
setlocale(LC_CTYPE, "Russian");
double *A;
int i, An;
system("cls");
fflush(stdin);
printf("Введите размер массива А:\n");
scanf_s("%d", &An);
A = new double[An];
if (A == NULL) {
printf("Предел размерности");
exit(0);
}
for (i = 0; i < An; i++)
{
printf("\n Введите значения массива А [%d]=", i);
scanf_s("%lf", A + i);
}
mf(A, An);
delete[]A;
_getch();
}
void mf(double *A1, int An1) {
double sum = 0;
int i1, min;
for (i1 = 0; i1 < An1; i1++)
{
printf("A[%d]=%.2lf;\n", i1, *(A1 + i1));
min = fabs(double (i1));
if (fabs (*(A1 + i1)) < min);
min = i1;
}
for (i1 = min; i1 < An1; i1++);
{
sum += fabs(*(A1 + i1));
printf("\n Rezult=%4d", sum);
}
_getch();
}Решение задачи: «Динамические массивы: подсчет суммы элементов после минимального по модулю элемента»
textual
Листинг программы
min = fabs(double (i1)); if (fabs (*(A1 + i1)) < min); min = i1;
Объяснение кода листинга программы
- Инициализируется переменная
minзначением абсолютного значения первого элемента массиваA1с помощью функции fabs() (упакованной функции abs() для чисел с плавающей точкой). - Проверяется, является ли текущий элемент массива
A1меньшим по модулю, чем значение переменнойmin. Если это так, то значение переменнойminобновляется значением индекса текущего элемента. - В конце выполнения цикла переменная
minбудет содержать индекс элемента массиваA1с минимальным значением по модулю.