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

Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Wampall
1 / 1 / 0
Регистрация: 18.12.2011
Сообщений: 66
18.12.2011, 17:49     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #1
Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10
Кто представляет как это сделать, напишите свой вариант. Буду очень благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2011, 17:49     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10
Посмотрите здесь:

найти произведение только тех из них которые больше заданного M C++
Найти среднее арифметическое тех элементов, которые расположены между максимальным и минимальным элементами C++
C++ Массив (Все вещественные числа массива которые больше 10 заменить на 1,остальные округлить до целого)
C++ Даны натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7
C++ Даны два целых числа; найти их среднее арифметическое, их среднее геометрическое
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.12.2011, 18:14     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iterator>
#include <iostream>
#include <vector>
#include <algorithm>
 
template <class T> T gen() { return (rand() % 21); }
 
template <class T> T acc(T init, T num) { return ((num > 10) ? (num + init) : (init)); }
 
template <class T> bool cnt(T num) { return (num > 10); }
 
int main()
{
    srand(time(NULL));
    std::vector<int> v(10);
    std::generate(v.begin(), v.end(), gen<int>);
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    std::cout << static_cast<float>(std::accumulate(v.begin(), v.end(), 0, acc<int>)) / std::count_if(v.begin(), v.end(), cnt<int>) << std::endl;
    return 0;
}
Wampall
1 / 1 / 0
Регистрация: 18.12.2011
Сообщений: 66
18.12.2011, 18:22  [ТС]     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #3
Очень благодарен, но боюсь моего уровня знаний не хватает чтобы понять ваш вариант решения..
Если бы как то по проще..
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.12.2011, 18:29     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #4
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 <iterator>
#include <iostream>
#include <vector>
#include <algorithm>
 
//Возвращает псевдослучайное число в диапазоне [0; 20]
template <class T> T gen() { return (rand() % 21); }
 
//Если num > 10 возвращает num + init, иначе - init. Нужна для подсчета суммы элементов
template <class T> T acc(T init, T num) { return ((num > 10) ? (num + init) : (init)); }
 
//Если num > 10 возвращает true, иначе - false. Нужна для подсчета количества элементов
template <class T> bool cnt(T num) { return (num > 10); }
 
int main()
{
    srand(time(NULL));
    std::vector<int> v(10);//Вектор на 10 элементов
    //Генерируем вектор при помощи функции gen
    std::generate(v.begin(), v.end(), gen<int>);
    //Выводим весь вектор на экран
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    //Выводим сууму элементов вектора(больших 10), деленную на количество элементов больших десяти.
    std::cout << static_cast<float>(std::accumulate(v.begin(), v.end(), 0, acc<int>)) / std::count_if(v.begin(), v.end(), cnt<int>) << std::endl;
    return 0;
}
generate
count_if
accumulate
Jupiter
18.12.2011, 18:31
  #5

Не по теме:

Цитата Сообщение от Wampall Посмотреть сообщение
Задача по програмированию
КО отдыхает, это ж додуматься так назвать тему на форуме программистов

Wampall
1 / 1 / 0
Регистрация: 18.12.2011
Сообщений: 66
18.12.2011, 18:37  [ТС]     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #6
Спасибо, это то что нужно=)

Добавлено через 5 минут
Вы правы, ошибся, больше не повторится
Jupiter,
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
18.12.2011, 18:50     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #7
2 soon
Не люблю придираться и поправлять других, но все же в задании указано, что числа вещественные и всего 9 чисел, а у Вас вектор на 10 элементов и типа int.
Да и к Вашему варианту мне еще и #include <numeric> потребовался. ( Ubuntu, g++ )

Цитата Сообщение от Wampall Посмотреть сообщение
Если бы как то по проще..
Вот "как-то попроще":
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
#define dimm_arr 9 // размер исходного массива
// заполнение исходного массива псевдослучайными целочисленными значениями
void fill_array( double[], const size_t );
// вывод массива на экран
void print_array( double[], const size_t );
// считаем среднее арифметическое тех элементов, которые больше 10
double calc_avg_more_10( double[], const size_t );
 
int main() {
    srand( time( NULL ) );
    double arr[ dimm_arr ];
 
    fill_array( arr, dimm_arr );
    cout << "Массив: " << endl;
    print_array( arr, dimm_arr );
 
    cout << "Среднее арифметическое элементов массива больших 10 равно "
            << calc_avg_more_10( arr, dimm_arr ) << endl;
 
    return 0;
}
 
void fill_array( double array[], const size_t dimm ) {
    for ( size_t i = 0; i < dimm; ++i )
        array[ i ] = rand() % 201 / 10.0; // [ 0..20 ]
 
}
 
void print_array( double array[], const size_t dimm ) {
    for ( size_t i = 0; i < dimm; ++i )
        cout << array[ i ] << " ";
 
    cout << endl;
}
 
double calc_avg_more_10( double array[], const size_t dimm ) {
    double sum = 0;
    size_t count = 0;
    for ( size_t i = 0; i < dimm; ++i )
        if ( array[ i ] > 10 ) {
            sum += array[ i ];
            ++count;
        }
    return sum / count;
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.12.2011, 18:56     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #8
Цитата Сообщение от Roof Посмотреть сообщение
Не люблю придираться и поправлять других, но все же в задании указано, что числа вещественные и всего 9 чисел, а у Вас вектор на 10 элементов и типа int.
Да и к Вашему варианту мне еще и #include <numeric> потребовался. ( Ubuntu, g++ )
Заготовка была с int, решил оставить как есть, буквально несколько строчек поменять - не проблема. Насчет 9 элементов - привычка, вижу b9, предполагаю, что там 10 элементов, т.к. отсчет с нуля. numeric - да, надо бы, accumulate оттуда. Но на g++ без проблем собралось.
Wampall
1 / 1 / 0
Регистрация: 18.12.2011
Сообщений: 66
18.12.2011, 19:15  [ТС]     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #9
Roof, Потрясающе. Только можете подсказать как сделать, чтобы окно выполнения не проскакивало. Я поставил system ("pause"); перед return sum / count;
Получилось что при выполнении показывает массив:
А среднее арифметическое вылетает сразу.

Добавлено через 11 минут
справился.
Цитата Сообщение от Wampall Посмотреть сообщение
Roof, Потрясающе. Только можете подсказать как сделать, чтобы окно выполнения не проскакивало. Я поставил system ("pause"); перед return sum / count;
Получилось что при выполнении показывает массив:
А среднее арифметическое вылетает сразу.
Справился.
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
18.12.2011, 19:16     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #10
Честно говоря у меня никуда ничего не проскакивает.
На Windows'е программированием на языке C++ никогда не занимался, потому могу только предположить такой вариант:
C++
1
2
3
...
system ("pause");
return 0;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2011, 19:26     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10
Еще ссылки по теме:

Даны четыре целых числа. Найти сумму тех из них, которые кратны трем и больше пяти C++
Даны четыре целых числа. найти сумму тех из них, которые кратны трем и больше пяти. Оператор цикла не использовать C++
C++ Вершины дерева вещественные числа. Описать процедуру, которая вычисляет среднее арифметическое всех вершин

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Wampall
1 / 1 / 0
Регистрация: 18.12.2011
Сообщений: 66
18.12.2011, 19:26  [ТС]     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 #11
Roof, так и сделал=)
Yandex
Объявления
18.12.2011, 19:26     Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10
Ответ Создать тему
Опции темы

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