int main() { int imin, min, n, i; int x[NMAX]; int sumNegatives = 0; double sum; SetConsoleOutputCP(1251); SetConsoleCP(1251);
// Задаем массив do { printf("Введите размер массива от 1 до %d = ", NMAX); scanf_s("%d", &n);
if (n <= 0 || n > NMAX) { printf("Размер массива n = %d, не соответствует размеру 1..%d элементов\n", n, NMAX); printf("Для завершения программы нажмите любую клавишу\n"); exit(0); } } while (n < 1 || n > NMAX);
for (i = 0; i < n; i++) { printf("x[%3d ]=", i); scanf_s("%d", &x[i]); } // Вывод исходного массива printf("Исходный массив х размером %d\n", n); for (i = 0; i < n; i++) printf("%8.2d", x[i]);
imin = 0;
// Определение минимального элемента и его позиции for (i = 0; i < n; i++) { if (x[i] < x[imin]) imin = i; } min = x[imin]; sum = 1.0; // Определение среднего геометрического за минимальным элементом for (i = imin + 1; i < n; i++) sum *= x[i]; sum = pow(sum, 1.0 / n);
printf("\n\nМинимальный элемент массива: %d\n", min); printf("Позиция минимального элемента: %d\n", imin); printf("Среднее арифметическое за минимальным элементом: %.2f\n", sum); printf("\n\nДля завершения программы нажмите любую клавишу\n"); system("pause"); return 0; }
if (imin < n-1) sum = pow(sum, 1.0 / (n-imin-1)); данная функция помогает, но только при положительных элементах массива
Аглая Шниц
Искусственный Интеллект
(145852)
среднее геометрическое определено только для положительных чисел, емнип:
Средним геометрическим нескольких п̲о̲л̲о̲ж̲и̲т̲е̲л̲ь̲н̲ы̲х̲ вещественных
чисел называется такое число, которым можно заменить каждое из этих
чисел так, чтобы их произведение не изменилось.
(вики)
int main(void) { int vector[NMAX] = { 0 }; size_t n; const int* end = NULL; const int* position = NULL; int min; system("chcp 1251 > nul"); n = input_size(); input_vector(vector, n); output_vector(vector, n, 8); end = vector + n; position = min_elemnet(vector, end); min = *position; printf("Минимальное значение в массиве: %d\n", min); printf("Индекс первого вхождения в массиве: %lli\n", position - vector); if (position + 1 == end) { puts("Минимальный элемент последний в массиве."); } else { int const* begin = position + 1; double am = arithmetic_mean(begin, end); double gm = geometric_mean(begin, end); printf("Среднее арифметическое после минимального: %.2lf\n", am); printf("Среднее геометрическое после минимального: %.2lf\n", gm); } system("pause > nul"); return 0; }
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<windows.h>
#include<math.h>
#define NMAX 100
int main()
{
int imin, min, n, i;
int x[NMAX];
int sumNegatives = 0;
double sum;
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
// Задаем массив
do
{
printf("Введите размер массива от 1 до %d = ", NMAX);
scanf_s("%d", &n);
if (n <= 0 || n > NMAX)
{
printf("Размер массива n = %d, не соответствует размеру 1..%d элементов\n", n, NMAX);
printf("Для завершения программы нажмите любую клавишу\n");
exit(0);
}
} while (n < 1 || n > NMAX);
for (i = 0; i < n; i++)
{
printf("x[%3d ]=", i);
scanf_s("%d", &x[i]);
}
// Вывод исходного массива
printf("Исходный массив х размером %d\n", n);
for (i = 0; i < n; i++)
printf("%8.2d", x[i]);
imin = 0;
// Определение минимального элемента и его позиции
for (i = 0; i < n; i++)
{
if (x[i] < x[imin])
imin = i;
}
min = x[imin];
sum = 1.0;
// Определение среднего геометрического за минимальным элементом
for (i = imin + 1; i < n; i++)
sum *= x[i];
sum = pow(sum, 1.0 / n);
printf("\n\nМинимальный элемент массива: %d\n", min);
printf("Позиция минимального элемента: %d\n", imin);
printf("Среднее арифметическое за минимальным элементом: %.2f\n", sum);
printf("\n\nДля завершения программы нажмите любую клавишу\n");
system("pause");
return 0;
}