Найти среднее арифметическое отрицательных элементов до 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выводится на экран.
- Значение переменной