Рубрики

Среднее из потока чисел

Уровень сложности: Новичок
Учитывая поток чисел, выведите среднее (или среднее) потока в каждой точке. Например, давайте рассмотрим поток как 10, 20, 30, 40, 50, 60,…

  Average of 1 numbers is 10.00
  Average of 2 numbers is 15.00
  Average of 3 numbers is 20.00
  Average of 4 numbers is 25.00
  Average of 5 numbers is 30.00
  Average of 6 numbers is 35.00
  ..................

Чтобы напечатать среднее значение потока, нам нужно выяснить, как найти среднее значение при добавлении нового числа в поток. Чтобы сделать это, все, что нам нужно, это количество чисел, увиденных до сих пор в потоке, предыдущее среднее и новое число. Пусть n будет количеством, prev_avg будет предыдущим средним, а x будет новым добавляемым числом , Среднее после включения числа x можно записать в виде (prev_avg * n + x) / (n + 1) .

C ++

#include <stdio.h>

  
// Возвращает новое среднее значение после включения x

float getAvg(float prev_avg, int x, int n)

{

    return (prev_avg * n + x) / (n + 1);

}

  
// Печатает среднее значение потока чисел

void streamAvg(float arr[], int n)

{

    float avg = 0;

    for (int i = 0; i < n; i++) {

        avg = getAvg(avg, arr[i], i);

        printf("Average of %d numbers is %f \n", i + 1, avg);

    }

    return;

}

  
// Программа драйвера для проверки вышеуказанных функций

int main()

{

    float arr[] = { 10, 20, 30, 40, 50, 60 };

    int n = sizeof(arr) / sizeof(arr[0]);

    streamAvg(arr, n);

  

    return 0;

}

Джава

// Java программа для поиска среднего
// потока чисел

class GFG {

  

    // Возвращает новое среднее значение после включения x

    static float getAvg(float prev_avg, float x, int n)

    {

        return (prev_avg * n + x) / (n + 1);

    }

  

    // Печатает среднее значение потока чисел

    static void streamAvg(float arr[], int n)

    {

        float avg = 0;

        for (int i = 0; i < n; i++) 

        {

            avg = getAvg(avg, arr[i], i);

            System.out.printf("Average of %d numbers is %f \n",

                                                   i + 1, avg);

        }

        return;

    }

  

    // Программа драйвера для проверки вышеуказанных функций

    public static void main(String[] args)

    {

        float arr[] = { 10, 20, 30, 40, 50, 60 };

        int n = arr.length;

        streamAvg(arr, n);

    }

}

  
// Этот код предоставлен Smitha Dinesh Semwal

python3

# Возвращает новое среднее
# после включения х

def getAvg(prev_avg, x, n):

    return ((prev_avg * 

             n + x) / 

            (n + 1));

  
# Печатает среднее значение
# поток чисел

def streamAvg(arr, n):

    avg = 0;

    for i in range(n):

        avg = getAvg(avg, arr[i], i);

        print("Average of ", i + 1,

              " numbers is ", avg);

  
Код водителя

arr = [10, 20, 30,

       40, 50, 60];

n = len(arr);

streamAvg(arr, n);

  
# Этот код добавлен
# по митсам

C #

// C # программа для поиска среднего
// потока чисел

using System;

  

class GFG 

{

  

    // Возвращает новое среднее

    // после включения х

    static float getAvg(float prev_avg, 

                        float x, int n)

    {

        return (prev_avg * n + x) / (n + 1);

    }

  

    // печатает среднее значение

    // поток чисел

    static void streamAvg(float[] arr, 

                          int n)

    {

        float avg = 0;

        for (int i = 0; i < n; i++) 

        {

            avg = getAvg(avg, arr[i], i);

            Console.WriteLine("Average of {0} "

                                "numbers is {1}"

                                     i + 1, avg);

        }

        return;

    }

  

    // Код драйвера

    public static void Main(String[] args)

    {

        float[] arr = {10, 20, 30, 

                       40, 50, 60};

        int n = arr.Length;

        streamAvg(arr, n);

    }

}

  
// Этот код предоставлен mits

PHP

<?php
// PHP-программа для Average of
// поток чисел

  
// Возвращает новое среднее
// после включения х

function getAvg($prev_avg, $x, $n)

{

    return ($prev_avg * $n + $x) / 

                        ($n + 1);

}

  
// Печатает среднее значение
// поток чисел

function streamAvg($arr, $n)

{

    $avg = 0;

    for ($i = 0; $i < $n; $i++)

    {

        $avg = getAvg($avg, $arr[$i], $i);

        echo "Average of ",$i + 1, "numbers is "

                                    ,$avg,"\n";

    }

    return;

}

  

    // Код драйвера

    $arr = array(10, 20, 30, 40, 50, 60);

    $n = sizeof($arr);

    streamAvg($arr, $n);

  
// Этот код предоставлен aj_36
?>


Выход :

Average of 1 numbers is 10.000000 
Average of 2 numbers is 15.000000 
Average of 3 numbers is 20.000000 
Average of 4 numbers is 25.000000 
Average of 5 numbers is 30.000000 
Average of 6 numbers is 35.000000 

Вышеуказанная функция getAvg () может быть оптимизирована с помощью следующих изменений. Мы можем избежать использования prev_avg и количества элементов, используя статические переменные (при условии, что для среднего значения потока вызывается только эта функция). Ниже приведена конкретная версия.

C ++

#include <bits/stdc++.h>

using namespace std;

  
// Возвращает новое среднее значение после включения x

float getAvg(int x) 

    static int sum, n; 

  

    sum += x; 

    return (((float)sum) / ++n); 

  
// Печатает среднее значение потока чисел

void streamAvg(float arr[], int n) 

    float avg = 0; 

    for (int i = 0; i < n; i++) 

    

        avg = getAvg(arr[i]); 

        cout<<"Average of "<<i+1<<" numbers is "<<fixed<<setprecision(1)<<avg<<endl; 

    

    return

  
// Код драйвера

int main() 

    float arr[] = { 10, 20, 30, 40, 50, 60 }; 

    int n = sizeof(arr) / sizeof(arr[0]); 

    streamAvg(arr, n); 

  

    return 0; 

  
// Этот код предоставлен rathbhupendra

С

#include <stdio.h>

  
// Возвращает новое среднее значение после включения x

float getAvg(int x)

{

    static int sum, n;

  

    sum += x;

    return (((float)sum) / ++n);

}

  
// Печатает среднее значение потока чисел

void streamAvg(float arr[], int n)

{

    float avg = 0;

    for (int i = 0; i < n; i++) {

        avg = getAvg(arr[i]);

        printf("Average of %d numbers is %f \n", i + 1, avg);

    }

    return;

}

  
// Программа драйвера для проверки вышеуказанных функций

int main()

{

    float arr[] = { 10, 20, 30, 40, 50, 60 };

    int n = sizeof(arr) / sizeof(arr[0]);

    streamAvg(arr, n);

  

    return 0;

}

Джава

// Java-программа для возврата
// Среднее из потока чисел

class GFG

{

static int sum, n;

      
// Возвращает новое среднее
// после включения х

static float getAvg(int x)

{

    sum += x;

    return (((float)sum) / ++n);

}

  
// Печатает среднее значение
// поток чисел

static void streamAvg(float[] arr,

                      int n)

{

    float avg = 0;

    for (int i = 0; i < n; i++)

    {

        avg = getAvg((int)arr[i]);

        System.out.println("Average of "+ (i + 1) + 

                           " numbers is " + avg);

    }

    return;

}

  
// Код драйвера

public static void main(String[] args)

{

    float[] arr = new float[]{ 10, 20, 30,

                               40, 50, 60 };

    int n = arr.length;

    streamAvg(arr, n);

}
}

  
// Этот код предоставлен mits

python3

# Возвращает новое среднее
# после включения х

def getAvg(x, n, sum):

    sum = sum + x;

    return float(sum) / n;

  
# Печатает среднее значение
# поток чисел

def streamAvg(arr, n):

    avg = 0;

    sum = 0;

    for i in range(n):

        avg = getAvg(arr[i], i + 1, sum);

        sum = avg * (i + 1);

        print("Average of ", end = "");

        print(i + 1, end = "");

        print(" numbers is ", end = "");

        print(avg);

    return;

  
Код водителя

arr= [ 10, 20, 30

       40, 50, 60 ];

n = len(arr);

streamAvg(arr,n);

  
# Этот код предоставлен mits

C #

using System;

  

class GFG

{

static int sum, n;

      
// Возвращает новое среднее
// после включения х

static float getAvg(int x)

{

  

    sum += x;

    return (((float)sum) / ++n);

}

  
// Печатает среднее значение
// поток чисел

static void streamAvg(float[] arr, int n)

{

    float avg = 0;

    for (int i = 0; i < n; i++)

    {

        avg = getAvg((int)arr[i]);

        Console.WriteLine("Average of {0} numbers "

                             "is {1}", (i + 1), avg);

    }

    return;

}

  
// Код драйвера

static int Main()

{

    float[] arr = new float[]{ 10, 20, 30,

                               40, 50, 60 };

    int n = arr.Length;

    streamAvg(arr, n);

  

    return 0;

}
}

  
// Этот код предоставлен mits

PHP

<?php
// Возвращает новое среднее
// после включения х

function getAvg($x)

{

    static $sum;

    static $n;

    $sum += $x;

    return (((float)$sum) / ++$n);

}

  
// печатает среднее значение
// поток чисел

function streamAvg($arr, $n)

{

    for ($i = 0; $i < $n; $i++) 

    {

        $avg = getAvg($arr[$i]);

        echo "Average of " . ($i + 1) .

             " numbers is ".$avg." \n";

    }

    return;

}

  
// Код драйвера

$arr = array(10, 20, 30, 

             40, 50, 60);

$n = sizeof($arr) / sizeof($arr[0]);

streamAvg($arr, $n);

  
// Этот код предоставлен mits
?>

Выход:

Average of 1 numbers is 10.0
Average of 2 numbers is 15.0
Average of 3 numbers is 20.0
Average of 4 numbers is 25.0
Average of 5 numbers is 30.0
Average of 6 numbers is 35.0

Спасибо Abhijeet Deshpande за предложение этой оптимизированной версии.

Связанная статья:
Программа для усреднения массива (итеративная и рекурсивная)

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

Рекомендуемые посты:

Среднее из потока чисел

0.00 (0%) 0 votes