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

Заменить значения элементов последовательности с максимальным и минимальным значением на среднее - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как сделать класс окна ,в котором находятся потоки для opengl? http://www.cyberforum.ru/cpp-beginners/thread420383.html
я хочу сделать приложение,способное оперировать с несколькими окнами,для каждого окна есть свой класс,а в нём потоки для рендеринга opengl. Только как это написать не знаю.можете дать код
C++ Напечатать день недели по его порядковому номеру С наступающем!!! Условие задачи: Напишите прогу, которая содержит функцию DayName() которая печатает день по данному номеру. Например: если ввести "1" : выдает : "Первый день это понедельник" если ввести "7" : выдает : "Седьмой день это воскресение" Имя дня (1-7) можно написать использую массив строк. http://www.cyberforum.ru/cpp-beginners/thread420376.html
Нубские вопросы C++
Привет товарищи! Учу тут язык, вот парочка вопросов. Вот код, выводит числа в обратном порядке (5 4 3 2 1) (без 0) #include <iostream> using namespace std; int main() { int n1, i;
найти номер телефона человека с заданной фамилией C++
Задали нам задачку в институте.. А препод даже не пришел на лекцию и не рассказал что как.. ПОмогите студенту, пожалуйсто. Операция: найти номер телефона человека с заданной фамилией.
C++ Простые числа http://www.cyberforum.ru/cpp-beginners/thread420358.html
Народ, выручайте снова! Почему когда в матрице появляется 5 или 7 их прога записывает много раз? Задание вот такое Дана матpица A. Определить количество элементов матрицы, являющихся простыми числами. код работает если mas = rand()%5; если больше то выдаёт хрень=( Через 2 часа сдавать, помогите пжлст! //
C++ массив С++ Здравствуйте Ув.пользователи и администрация. Имеется вот такая задача: дан массив: а)вывести его на экран б)инвертировать, т.е. поменять местами 1ый элемент с последним 2ой с предпоследним и т.д. и вывести в)посчитать количество элементов массива, превышающих 1ый элемент Массив одномерный и динамический. Программу должны выполнять функции (void main() должна содержать только ввод... подробнее

Показать сообщение отдельно
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
29.12.2011, 14:46     Заменить значения элементов последовательности с максимальным и минимальным значением на среднее
Цитата Сообщение от Ренатка Посмотреть сообщение
задание.
Размерность массива: 30
Диапазон значений от -100 до 100
Во всех последовательностях положительных чисел заменить значения элементов с максимальным и минимальным значением на среднее для этой последовательности
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
#include <vector>
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <numeric>
 
int main()
{
    srand(time(nullptr));
    std::vector<float> v(30);
    std::generate(v.begin(), v.end(), [] { return rand() % 201 - 100; });
    std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, " "));
    std::cout << std::endl;
    auto first = find_if(v.begin(), v.end(), [](float num) { return num > 0; });
    auto last = find_if(first, v.end(), [](float num) { return num < 0; });
    while(last != v.end())
    {
        auto sum = std::accumulate(first, last, 0.0);
        *std::min_element(first, last) = sum / (last - first);
        *std::max_element(first, last) = sum / (last - first);
        first = find_if(last, v.end(), [](float num) { return num > 0; });
        last = find_if(first, v.end(), [](float num) { return num < 0; });
    }
    std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, " "));
    std::cout << std::endl;
    return 0;
}
Без C++0x
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
#include <vector>
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <numeric>
 
template <class T> T gen() { return rand() % 201 - 100; }
 
template <class T> bool isPositive(T num) { return num > 0; }
 
template <class T> bool isNegative(T num) { return num < 0; }
 
int main()
{
    srand(time(NULL));
    std::vector<float> v(30);
    std::generate(v.begin(), v.end(), gen<float>);
    std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, " "));
    std::cout << std::endl;
    std::vector<float>::iterator first = find_if(v.begin(), v.end(), isPositive<float>);
    std::vector<float>::iterator last = find_if(first, v.end(), isNegative<float>);
    while(last != v.end())
    {
        float sum = std::accumulate(first, last, 0.0);
        *std::min_element(first, last) = sum / (last - first);
        *std::max_element(first, last) = sum / (last - first);
        first = find_if(last, v.end(), isPositive<float>);
        last = find_if(first, v.end(), isNegative<float>);
    }
    std::copy(v.begin(), v.end(), std::ostream_iterator<float>(std::cout, " "));
    std::cout << std::endl;
    return 0;
}
 
Текущее время: 13:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru