Найти среднее арифметическое отрицательных элементов до max значения и количество нулей после него - C (СИ)
Формулировка задачи:
Здравствуйте,пишу пограмку на Си, помогите сделать так,чтобы она рассчитывала среднее арифметическое отрицательных элементов до максимального элемента и определяла кол-во нулевых элементов после макс.элемента.Вот мой код,за ранее спасибо.
#include "stdio.h" #include "math.h" #include "conio.h" #include "windows.h" int main () {int i,n,imax,k=0,pos=0; double x[50]={5,16,-98,-96,-55,44,2,3,0,55,9,58,-74,-56,88,1,73,59,-18200,-8,77,2,99,1895,666,748,0,2,-89,-6,-74,7,88,5,23,-34,0,58,-98,-45,0,54,2,1,7,-9,-8,55,49,12},max=0; double s; SetConsoleOutputCP(1251); SetConsoleCP(1251); printf ("\nВведите размер массива(Не более 50) ="); scanf_s ("%d", &n); if (n<0 || n>50) {printf ("\t Размер массива n=%d не соответствует размеру элементов 1..50\n",n); _getch (); exit (0); } printf ("Массив х размером %d \n",n); for (i=0;i<n;i++) printf ("%8.0lf",x[i]); s=0; k=0; for (i=0;i<n;i++) if (x[i]<0); {s+=x[i]; k++;} s/=k; printf ("\nСреднее арифметическое отрицательных элементов=%8.0lf\n",s); for (i=0;i<n;i++) { if (x[i]>max) {max=x[i]; pos=i; } } printf ("\nМаксимальное значение элемента =%8.0lf\n",max); printf ("\Позиция = %d",pos); getch (); return 0; }
Решение задачи: «Найти среднее арифметическое отрицательных элементов до max значения и количество нулей после него»
textual
Листинг программы
#include <stdio.h> #include <math.h> #include <locale.h> #define N 50 int main(void) { setlocale(LC_ALL, "ru"); int i,k=0,pos=0,c=0; double x[N]={5,16,-98,-96,-55,44,2,3,0,55,9,58,-74,-56,88,1,73,59,-18200,-8,77,2,99,1895,666,748,0,2,-89,-6,-74,7,88,5,23,-34,0,58,-98,-45,0,54,2,1,7,-9,-8,55,49,12}; double max,s,b; max=x[0]; for (i=1;i<N;i++) { if (x[i]>max) {max=x[i]; pos=i; } } for(i=pos+1;i<N;i++){ b=x[i]; if(b==0)c++; } s=0; k=0; for (i=0;i<pos;i++){ if (x[i]<0) {s+=x[i];k++;} } s/=k; return 0; }
Объяснение кода листинга программы
В этом коде задача состоит в том, чтобы найти среднее арифметическое всех отрицательных чисел, которые меньше максимального значения в массиве, и количество нулей, которые находятся после этого максимального значения. Вот список действий, которые выполняются в коде:
- Установка начального значения переменных:
max
устанавливается равным первому элементу массиваx[0]
.s
устанавливается равным нулю.k
устанавливается равным нулю.pos
устанавливается равным нулю.c
устанавливается равным нулю.
- Поиск максимального значения в массиве:
- Переменная
max
инициализируется значением первого элемента массиваx[0]
. - Используется цикл
for
, чтобы пройти через каждый элемент массива от индекса 1 до N-1. - Если текущий элемент
x[i]
больше значенияmax
, то обновляется значениеmax
, а также индексpos
для последнего найденного максимального элемента.
- Переменная
- Подсчет количества нулей после максимального значения:
- Переменная
c
инициализируется нулем. - Используется цикл
for
, чтобы пройти через каждый элемент массива, начиная с индексаpos+1
. - Если текущий элемент
x[i]
равен нулю, то увеличивается значение переменнойc
.
- Переменная
- Подсчет среднего арифметического отрицательных чисел:
- Переменная
s
инициализируется нулем. - Переменная
k
инициализируется нулем. - Используется цикл
for
, чтобы пройти через каждый элемент массива до индексаpos
. - Если текущий элемент
x[i]
отрицательный, то к переменнойs
прибавляется его значение, а переменнаяk
увеличивается на единицу. - Значение переменной
s
делится на значение переменнойk
, чтобы получить среднее арифметическое.
- Переменная
- Вывод результатов:
- Значение переменной
s
выводится на экран. - Значение переменной
c
выводится на экран.
- Значение переменной
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д