Как найти среднее арифметическое нечетных чисел массива

let x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for(let i = 0;i<x.length; i++){
    if(i % 2 == 0){
        console.log(i/3)//не знаю правильно ли???
    }
}

задан 29 янв 2020 в 22:28

Vahan's user avatar

VahanVahan

4832 серебряных знака14 бронзовых знаков

1

    let x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
    var count = 0;
    var summ = 0;
    for(let i = 0;i<x.length; i++){
        if(x[i] % 2 == 0){ //Тут берём число и проверяем чётное ли. i у Вас это ключ
            count += 1; // Если чётное считаем сколько чётных цифр
            summ += x[i]; // Если чётно считаем сумму чётных
        }
    }
    var itog = summ / count; // Выводим среднее - делим сумму на количество.
    
    console.log(itog);

ответ дан 29 янв 2020 в 22:41

Denis640Kb's user avatar

Denis640KbDenis640Kb

14k5 золотых знаков21 серебряный знак45 бронзовых знаков

Станислав1234

0 / 0 / 0

Регистрация: 26.09.2018

Сообщений: 55

1

Вычислить среднее арифметическое нечетных элементов массива

09.12.2020, 18:27. Показов 9400. Ответов 2

Метки c++ (Все метки)


Студворк — интернет-сервис помощи студентам

В одномерном массиве, состоящем из n действительных элементов,
вычислить:
1) среднее арифметическое нечетных элементов массива;

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int n;
    int ser = 0;//среднее число
    int k = 0;//Кол-во нечетных элементов
    int sum = 0;//Сумма нечетных элементов
    cout << "Введите n=";
    cin >> n;
    int* arr = new int[n];
    for (int i = 0; i < n; i++)
    {
        arr[i] = rand() % 10;
        cout << arr[i] ;
    }
    for (int i = 0; i < n; i++)
    {
        if (arr[i] % 2 != 0)
            sum += arr[i];
        k++;
    }
     ser = sum / k;
    cout <<"Среднее значение=" << ser <<endl ;
    return(0);
}

Выводит не средние значение , а что-то непонятное.



0



Biven

40 / 23 / 17

Регистрация: 03.12.2020

Сообщений: 52

09.12.2020, 19:15

2

Цитата
Сообщение от Станислав1234
Посмотреть сообщение

for (int i = 0; i < n; i++)
    {
        if (arr[i] % 2 != 0)
            sum += arr[i];
        k++;
    }

Станислав1234, ошибка в этой части, у вас k не в условии, поэтому оно считает все элементы. Его надо внести в условный оператор. Вот так:

C++
1
2
3
4
    if (arr[i] % 2 != 0){
        sum += arr[i];
        k++;
        }

Добавлено через 4 минуты
и еще, зачем вам 2 цикла, все можно сделать в одном.
также можно обойтись без переменной ser

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int n;
    int k = 0;//Кол-во нечетных элементов
    int sum = 0;//Сумма нечетных элементов
    cout << "Введите n=";
    cin >> n;
    int* arr = new int[n];
    for (int i = 0; i < n; i++)
    {
        arr[i] = rand() % 10;
        cout << arr[i] ;
        if (arr[i] % 2 != 0){
            sum += arr[i];
        k++;}
    }
    cout <<"Среднее значение=" << sum / k <<endl ;
    return(0);
}



1



Yetty

7427 / 5021 / 2891

Регистрация: 18.12.2017

Сообщений: 15,694

09.12.2020, 19:40

3

Biven, для целочисленного массива у Вас неправильно:

Цитата
Сообщение от Biven
Посмотреть сообщение

sum / k

т.к. целочисленное деление

но по условию:

Цитата
Сообщение от Станислав1234
Посмотреть сообщение

состоящем из n действительных элементов

Добавлено через 10 минут
Станислав1234, для такого условия задачи лучше сделать ввод с клавиатуры

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, k=0;
    double avg_odd=0.;   
    cout << "n="; cin >> n;
    
       double* a = new double[n];
    
    cout << "Enter " << n << " numbers:n";   
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
        if (a[i]-int(a[i])==0 && int(a[i])%2) {k++;avg_odd+=a[i];}        
    }
    
    if(k)
    { 
        avg_odd/=k;
        cout << "average odd = " << avg_odd << "n";
    }
    else cout << "odd numbers are absentn";
 
    delete[]a;
system("pause");
return 0;
}



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

09.12.2020, 19:40

3

Формулировка задачи:

Ребят помогите!

Дано натуральное число N и последовательность a1,a2,…,aN натуральных чисел, заданных с клавиатуры. Найти среднее арифметическое нечетных элементов массива. Решить задачу для N=10. .(3б.)

заранее спасибо!!!!!!
надо до 21,01,13!!

Код к задаче: «Найти среднее арифметическое нечетных элементов массива»

textual

Const
  n=10;
Var
  a: Array[1..n] of Integer;
  i,k: Byte;
  s: Integer;
BEGIN
Writeln('Введите массив:');
For i:=1 to n do
begin
  Readln(a[i]);
  If odd(a[i]) Then
  begin
    s:=s+a[i];
    Inc(k);
  end;
end;
Writeln('Ср. арифм. нечетных = ',s/k:2:2);
Readln
END.

Полезно ли:

5   голосов , оценка 4.000 из 5

Условие задачи: Массив А вводится с клавиатуры. Найти среднее арифметическое его элементов с нечетными номерами. Размер произвольный. (Язык Pascal)

Сложность: легкая.

Решение задачи

Для начала продумаем решение. Нам сказано найти среднее арифметическое элементов массива с нечетными номерами, что это значит? Как вы знаете у массива каждое значение под своим номером, например:

mass[
1
] :=
32
;
mass[
2
] :=
43
;

Т.е. под номером 1 в массиве значение 32, под номером 2 значение 43, вот нам надо найти среднее арифметическое элементов массива с нечетными номерами, т.е. 1 3 5 и т.д.

Среднее арифметическое — это сумма всех элементов деленное на кол-во элементов, в нашем случаи сумма всех элементов с нечетными номерами деленное на их кол-во.

Массив мы будем вводить в самой программе, т.е. введем число, и проверим его номер, если он нечетный тогда этот элемент занесем в сумму, чтобы потом найти среднее арифметическое.

Для того чтобы решить задачу нам понадобятся следующие переменные:

  • Переменная mass — для массива
  • Переменная i — для цикла
  • Переменная n — для кол-ва элементов массива
  • Переменная count — для кол-во нечетных номеров
  • Переменная summa — для сумма элементов с нечетными номерами
  • Переменная sred — для сред.ариф.
  • Начнем мы с каркаса нашей программы

    type

    massiv =
    array
    [
    1..1000
    ]
    of
    integer
    ;
    // создаём свой тип данных для массива

    var

    mass : massiv;
    // объявляем переменные

    i, n, summa, count :
    integer
    ;
    // объявляем переменные

    sred :
    real
    ;
    // объявляем переменные

    begin

    write
    (
    'Введите длину массива : '
    );readln(n);
    // просим пользователя ввести длину массива

    readln;
    // чтобы программа не закрывалась
    end
    .

    Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ), попросили пользователя ввести кол-во элементов массива.

    Теперь надо заполнять массив вручную, заполняется массив в цикле, как только мы введем число, нам надо проверить его номер на нечетность с помощью условия и операции mod, как это делается читайте (тут) и если номер нечетный то мы просто увеличиваем общую сумму чисел с нечетными номерами и их кол-во:

    for
    i:=
    1
    to
    n
    do
    // делаем цикл для заполнения массива

    begin

    write
    (
    'Введите '
    , i ,
    ' элемент : '
    );readln(mass[i]);
    // заполняем массива вручную

    if
    (i
    mod
    2
    <>
    0
    )
    then
    // проверяем на нечетность номер элемента, если нечетный, то

    begin

    count := count +
    1
    ;
    // увеличиваем кол-во нечетных номеров

    summa := summa + mass[i];
    // и увеличиваем сумму

    end
    ;

    end
    ;

    Теперь нам осталось поделить сумму на кол-во и мы найдем среднее арифметическое:

    sred := summa / count;
    // находим среднее арифметическое

    Всё решение задачи Pascal

    type

    massiv =
    array
    [
    1..1000
    ]
    of
    integer
    ;
    // создаём свой тип данных для массива

    var

    mass : massiv;
    // объявляем переменные

    i, n, summa, count :
    integer
    ;
    // объявляем переменные

    sred :
    real
    ;
    // объявляем переменные

    begin

    write
    (
    'Введите длину массива : '
    );readln(n);
    // просим пользователя ввести длину массива


    for
    i:=
    1
    to
    n
    do
    // делаем цикл для заполнения массива

    begin

    write
    (
    'Введите '
    , i ,
    ' элемент : '
    );readln(mass[i]);
    // заполняем массива вручную

    if
    (i
    mod
    2
    <>
    0
    )
    then
    // проверяем на нечетность номер элемента, если нечетный, то

    begin

    count := count +
    1
    ;
    // увеличиваем кол-во нечетных номеров

    summa := summa + mass[i];
    // и увеличиваем сумму

    end
    ;

    end
    ;

    sred := summa / count;
    // находим среднее арифметическое


    writeln
    (
    'Среднее арифметическое с нечетными номерами : '
    , sred);
    // выводим результат

    readln;
    // чтобы программа не закрывалась
    end
    .

    Предыдущая

    ПрограммированиеЗадачи по Pascal. Найти сумму элементов массива с четными номерами, произведение отрицательных элементов, количество нечетных элементов.

    Следующая

    ПрограммированиеЗадачи по Pascal. Найти произведение элементов, кратных 3 в массиве.

    Алгоритмы
    решения задач вычисления среднего
    арифметического и среднего геометрического
    элементов массива, удовлетворяющих
    некоторому условию, представляют собой
    комбинацию алгоритмов определения
    количества элементов массива,
    удовлетворяющих некоторому условию, и
    вычисления суммы и произведения элементов
    массива соответственно. Для вычисления
    среднего арифметического необходимо
    найти сумму и количество элементов,
    удовлетворяющих поставленному условию.
    А для вычисления среднего геометрического
    надо найти произведение и количество
    нужных элементов (определение среднего
    геометрического нескольких чисел
    приведено в разделе 6.1.3). Рассмотрим
    особенности программной реализации
    этих алгоритмов на примере задачи
    вычисления среднего арифметического
    четных элементов и среднего геометрического
    нечетных элементов массива.

    Объявляем
    переменные, необходимые для решения
    задачи. Переменные для хранения суммы
    и произведения всегда будут иметь тот
    же тип данных, что и элементы массива.

    Dim summa, proiz As Integer

    Переменные для хранения количества
    четных (kol1)
    и нечетных (kol2)
    элементов массива, очевидно, будут иметь
    целый тип.

    Dim kol1, kol2 As Integer

    Среднее арифметическое
    получается в результате деления, поэтому
    оно всегда имеет рациональный тип. То
    же относится и к среднему геометрическому,
    которое получается в результате
    извлечения корня некоторой степени.

    Dim arifm, geom As Single

    Задаем начальные значения: для суммы –
    ноль, для произведения – единица.

    summa = 0

    proiz = 1

    До начала анализа элементов массива
    оба количества полагаются равными нулю.

    kol1 = 0

    kol2 = 0

    Организуем цикл для анализа элементов
    массива. Элементы массива последовательно
    пронумерованы от 0 до n.
    Следовательно, счетчик цикла должен
    изменяться в этом же диапазоне. Тогда
    наi-м
    шаге цикла мы будем обрабатывать элемент
    массива с номеромi.

    For i = 0 To n

    На каждом шаге проверяем, является ли
    очередной элемент массива четным числом.
    Четные числа делятся на два без остатка.
    Другими словами, для четных чисел остаток
    при делении на два равен нулю.

    If a(i) Mod 2 = 0 Then

    Если
    текущий элемент массива является четным
    числом, то увеличиваем на единицу
    количество четных элементов массива,
    а к сумме добавляем значение элемента
    массива.

    kol1 += 1

    summa += a(i)

    Else

    В противном случае, если элемент массива
    является нечетным числом, мы увеличиваем
    на единицу количество нечетных чисел,
    а накопленное произведение умножаем
    на значение текущего элемента массива.

    kol2 += 1

    proiz
    *= a(i)

    End If

    Next

    После окончания основного цикла
    анализируем полученные результаты,
    вычисляем значения среднего арифметического
    и среднего геометрического, если это
    возможно, и выводим ответы в окно списка.
    Чтобы зрительно отделить исходные
    данные от результатов вычислений, первым
    делом выведем горизонтальную черту.

    lstA.Items.Add(“——————————-“)

    Анализируем количество четных чисел.

    If kol1 = 0 Then

    Если количество четных чисел равно
    нулю, значит, в массиве нет ни одного
    четного числа. В этом случае невозможно
    вычислить их среднее арифметическое.
    Поэтому вместо ответа надо вывести
    поясняющий текст.

    lstA.Items.Add(“Нет
    четных”)

    Else

    В противном случае мы вычисляем среднее
    арифметическое.

    arifm = summa / kol1

    Полученный результат мы выводим в окно
    списка.

    lstA.Items.Add(“Сред.
    арифм. четных = ” + _

    Str(arifm))

    End If

    Теперь анализируем количество нечетных
    чисел.

    If kol2 = 0 Then

    Если количество нечетных чисел равно
    нулю, значит, в массиве нет ни одного
    нечетного числа. В этом случае невозможно
    вычислить их среднее арифметическое.
    Поэтому вместо ответа надо вывести
    поясняющий текст.

    lstA.Items.Add(“Нет
    нечетных”)

    Else

    Иначе мы анализируем знак подкоренного
    выражения.

    If proiz > 0 Then

    Если произведение нечетных чисел
    положительно, то мы можем вычислить их
    среднее геометрическое без дополнительных
    преобразований.

    geom = proiz ^ (1 / kol2)

    Полученное значение выводим в окно
    списка.

    lstA.Items.Add(“Сред.
    геом. нечетных = ” + _

    Str(geom))

    Else

    В противном случае (если подкоренное
    выражение отрицательное) мы должны
    проверить четность степени корня.

    If kol2 Mod 2 = 0 Then

    Если требуется извлечь корень четной
    степени, то задача вычисления среднего
    геометрического не имеет решения, так
    как извлечение корня четной степени из
    отрицательного числа невозможно. Поэтому
    вместо ответа выводим поясняющий текст.

    lstA.Items.Add(“Невозможно
    ” + _


    вычислить сред. геом.”)

    Else

    Иначе, если степень корня нечетная, то
    для вычисления корня потребуется
    составить арифметическое выражение. В
    Visual Basic 2005 операция извлечения корня
    произвольной степени определена только
    для положительных подкоренных выражений.
    Поэтому, когда необходимо извлечь корень
    нечетной степени из отрицательного
    числа, поступают следующим образом.
    Корень извлекается из модуля подкоренного
    выражения, а у полученного результата
    знак меняется на противоположный.

    geom
    = -Math.Abs(proiz) ^ (1 / kol2)

    Полученный результат выводим в окно
    списка.

    lstA.Items.Add(“Сред.
    геом. ” + _

    “нечетных
    = ” + Str(geom))

    End If

    End If

    End If

    Полный
    текст программы представлен в приложении
    24. Примеры работы программы приведены
    на рис. 39.

    Рис. 39. Примеры работы программы
    вычисления среднего арифметического
    четных и среднего геометрического
    нечетных элементов массива

    Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #

    Добавить комментарий