Форум программистов, компьютерный форум CyberForum.ru

Передалайте задачу как можна по проще - C++

Восстановить пароль Регистрация
 
Valik2
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 54
17.06.2013, 09:54     Передалайте задачу как можна по проще #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
 
int main()
{
    vector<double> v {1.2, 6.0, 66.3, 9.1, 5.5, -0.5, 2.2, 7.8, 2.2};
    auto first_negative = begin(v);
    while (*first_negative > 0.0 && first_negative != end(v))
        ++first_negative;
    double geometric_mean =
        pow(accumulate(begin(v), first_negative, 1.0, multiplies<double>()),
            1.0 / static_cast<double>( distance( begin(v), first_negative ) ));
    cout << geometric_mean;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2013, 09:54     Передалайте задачу как можна по проще
Посмотрите здесь:

C++ Как проще всего нарисовать прямоугольник?
C++ нужно решить как можно проще
Можно ли это написать как то проще C++
C++ Сочините пример как можно проще на сдвиг
C++ можно написать ее как то проще ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
17.06.2013, 10:01     Передалайте задачу как можна по проще #2
Куда проще?
Valik2
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 54
17.06.2013, 10:06  [ТС]     Передалайте задачу как можна по проще #3
ну как можна проще я ниче непонимаю ваше здесь
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
17.06.2013, 10:07     Передалайте задачу как можна по проще #4
Цитата Сообщение от Valik2 Посмотреть сообщение
ну как можна прощ
Что значит проще?
Valik2
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 54
17.06.2013, 10:11  [ТС]     Передалайте задачу как можна по проще #5
C++
1
2
3
4
5
6
7
8
vector<double> v {1.2, 6.0, 66.3, 9.1, 5.5, -0.5, 2.2, 7.8, 2.2};
    auto first_negative = begin(v);
    while (*first_negative > 0.0 && first_negative != end(v))
        ++first_negative;
    double geometric_mean =
        pow(accumulate(begin(v), first_negative, 1.0, multiplies<double>()),
            1.0 / static_cast<double>( distance( begin(v), first_negative ) ));
    cout << geometric_mean;
вот ето
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
17.06.2013, 10:36     Передалайте задачу как можна по проще #6
Цитата Сообщение от Valik2 Посмотреть сообщение
как можна проще
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int Count(double *a, double *end)
{
   return a < end && (*a) >= 0 ? 1 + Count(a + 1, end) : 0;
}
double Prod(double *a, double *end)
{
   return a < end && (*a) >= 0 ? (*a) * Prod(a + 1, end) : 1.0;
}
int main()
{
   double a[] = {1.2, 6.0, 66.3, 9.1, 5.5, -0.5, 2.2, 7.8, 2.2};
   int n = sizeof(a) / sizeof(*a);
   printf("sred = %f\n", pow(Prod(a, a + n), 1.0 / Count(a, a + n)));
   return 0;
}
Yandex
Объявления
17.06.2013, 10:36     Передалайте задачу как можна по проще
Ответ Создать тему
Опции темы

Текущее время: 01:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru