Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] обработка массива


Автор: dizel003 1.11.2011, 16:05
Здравствуйте. Нужна помощь в написании небольшой программы на C ++

Массив из N вещественных элементов заполнить с клавиатуры, передать в функцию, вычислить среднее арифметическое значение элементов массива, результат вернуть в вызывающую функцию main и вывести на экран. 


Заранее благодарю вас.

Автор: azesmcar 1.11.2011, 16:32
Вообще-то так, как ты описал будет не очень то оптимально, так-как придется делать две итерации вместо одной. Так будет правильнее
Код

#include <iostream>

int main()
{
    const int N = 10;
    int numbers[N];
    int sum = 0;
    for (int i = 0; i < N; ++i)
    {
        std::cout << "numbers[" << i << "] = ";
        std::cin >> numbers[i];
        sum += numbers[i];
    }
    std::cout << "Arithmetic mean = " << (double)sum / N << std::endl;
}

но на всякий случай (если сильно надо)
Код

#include <iostream>

double arithmetic_mean(const int const * arr, int size)
{
    int sum = 0;
    for (int i = 0; i < size; ++i)
        sum += arr[i];
    return (double)sum / size;
}

int main()
{
    const int N = 10;
    int numbers[N];
    int sum = 0;
    for (int i = 0; i < N; ++i)
    {
        std::cout << "numbers[" << i << "] = ";
        std::cin >> numbers[i];
    }
    std::cout << "Arithmetic mean = " << arithmetic_mean(numbers, N) << std::endl;
}

ну или так
Код

#include <iostream>
#include <numeric>
#include <vector>

int main()
{
    const int N = 10;
    std::vector<int> numbers(N, 0);
    for (int i = 0; i < N; ++i)
    {
        std::cout << "numbers[" << i << "] = ";
        std::cin >> numbers[i];
    }
    int sum = std::accumulate(numbers.begin(), numbers.end(), 0);
    std::cout << "Arithmetic mean = " << (double)sum / N << std::endl;
}

Автор: dizel003 1.11.2011, 22:37
Цитата(azesmcar @ 1.11.2011,  16:32)
Вообще-то так, как ты описал будет не очень то оптимально, так-как придется делать две итерации вместо одной. Так будет правильнее
............................................................

Спасибо больше за ответ!!!

А не могли бы вы помочь, вот это лучше переделать. Я вот сейчас пришел домой, и не заметив ваш ответ начал делать свое...
Сделал за пару часов сидя за книгой)

Код


#include <iostream.h>

void modify_array (int[],int);

void main()
{

const int N = 10;
int a [N];
for (int i=0;i<N;i++)
{
cout<<No:<<i+1<<endl;
cin>>a[i];

modify_array(a,N); 

}
}

void modify_array (int b[],int d)
{


}


На сколько я понял строчка 
Код

modify_array(a,N); 

должно передавать массив по ссылке

И как я понял в функции 

Код

void modify_array (int b[],int d)
{


}


надо описать математическое действие по подсчету среднеарифметического числа!!! Что я не как не могу понять пока как сделать(((((  smile 

И потом надо результат обратно вернуть в функцию mein

Код

void main()
{

const int N = 10;
int a [N];
for (int i=0;i<N;i++)
{
cout<<No:<<i+1<<endl;
cin>>a[i];

modify_array(a,N); 

}
}


и вывести на экран значение! Ну это легко...

Если можно, подскажите пожалуйста как в моей формуле рассчитать среднеарифметическое... так как мне придется объяснять работу и я не уверен, что смогу рассказать, как в вашем коде это получается(
Первый раз столкнулся с  "std::"
Никудышный из меня программист, очень давно не включал эту программу... а вот тут пришлось.



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)