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