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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Wampall
1 / 1 / 0
Регистрация: 18.12.2011
Сообщений: 66
#1

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

18.12.2011, 17:49. Просмотров 1329. Ответов 10
Метки нет (Все метки)

Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10
Кто представляет как это сделать, напишите свой вариант. Буду очень благодарен
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2011, 17:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Даны вещественные числа b1,b2,..b9. Определить среднее арифметическое тех из них которые больше 10 (C++):

Определить среднее арифметическое тех чисел заданной последовательности, которые больше некоторого числа n - C++
Даны натуральное число 'x' и целые числа 'a1,a2, ..., ax'. Определить среднее арифметическое тех чисел ai, которые больше некоторого числа...

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

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

Даны натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7 - C++
Даны натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7. Буду благодарен за решение. Кто чем поможет)

Даны два целых числа; найти их среднее арифметическое, их среднее геометрическое - C++
Даны два целых числа найти их среднее арифмитическое их среднее геометрическое Заголовок темы продумываем

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.12.2011, 18:14 #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;
}
1
Wampall
1 / 1 / 0
Регистрация: 18.12.2011
Сообщений: 66
18.12.2011, 18:22  [ТС] #3
Очень благодарен, но боюсь моего уровня знаний не хватает чтобы понять ваш вариант решения..
Если бы как то по проще..
0
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.12.2011, 18:29 #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
1
Jupiter
18.12.2011, 18:31
  #5

Не по теме:

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

0
Wampall
1 / 1 / 0
Регистрация: 18.12.2011
Сообщений: 66
18.12.2011, 18:37  [ТС] #6
Спасибо, это то что нужно=)

Добавлено через 5 минут
Вы правы, ошибся, больше не повторится
Jupiter,
0
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
18.12.2011, 18:50 #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;
}
1
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.12.2011, 18:56 #8
Цитата Сообщение от Roof Посмотреть сообщение
Не люблю придираться и поправлять других, но все же в задании указано, что числа вещественные и всего 9 чисел, а у Вас вектор на 10 элементов и типа int.
Да и к Вашему варианту мне еще и #include <numeric> потребовался. ( Ubuntu, g++ )
Заготовка была с int, решил оставить как есть, буквально несколько строчек поменять - не проблема. Насчет 9 элементов - привычка, вижу b9, предполагаю, что там 10 элементов, т.к. отсчет с нуля. numeric - да, надо бы, accumulate оттуда. Но на g++ без проблем собралось.
0
Wampall
1 / 1 / 0
Регистрация: 18.12.2011
Сообщений: 66
18.12.2011, 19:15  [ТС] #9
Roof, Потрясающе. Только можете подсказать как сделать, чтобы окно выполнения не проскакивало. Я поставил system ("pause"); перед return sum / count;
Получилось что при выполнении показывает массив:
А среднее арифметическое вылетает сразу.

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

Даны 100 целых чисел, принадлежащих интервалу [0; 1000]. Определите количество тех из них, которые делятся на - C++
Даны 100 целых чисел, принадлежащих интервалу . Определите количество тех из них, которые делятся на 7. 241; 488; 149; 893; 622; 793;...

Даны вещественные числа x и y. Определить, принадлежит ли точка - C++
Даны вещественные числа x и y. Определить, с координатами (x,y) заштрихованной части плоскости. Считать, что точки на границе также...

Массив (Все вещественные числа массива которые больше 10 заменить на 1,остальные округлить до целого) - C++
Подскажите что не так в программе. Суть в том,надо все вещественные числа массива которые больше 10 заменить на 1,остальные округлить до...

Найти среднее арифметическое тех элементов, которые расположены между максимальным и минимальным элементами - C++
Средствами ООП решить задачу: Случайным образом вводятся 20 вещественных элементов массива. Найти среднее арифметическое тех элементов,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.12.2011, 19:26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru