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

номер максимального элемента массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите по работе с файлами http://www.cyberforum.ru/cpp-beginners/thread39122.html
struct MyStruct { char * Nam; unsigned int Salary; }; MyStruct emp; *emp.Nam="Ivan Ivanov"; emp.Salary=109000; ofstream f ("emp.dat",ios::binary);
C++ Ряды степеней Может быть умные дяди программисты помогли бы бедной неумелой девушке с заданием? Потому что та, даже не понимает, с чего нужно его начинать. :) Хотя бы объясните в чём цель задания состоит... Да -... http://www.cyberforum.ru/cpp-beginners/thread39110.html
C++ Как получить ассемблерский код
Как компилировать программу, чтобы потом можно было получить из неё ассемблерский код и какие нужны дополнгительные программ, если конечно нужны.
C++ Что делает данный код и зачем такое кому-нибудь может понадобиться?
Я ответил на вопрос,но точной формулировки не нашёл,хотел бы свериться(приложения с ответами нет).Задание: Чёрный ящик.Что делается в данном примере?Зачем кому нибудь может понадобиться подобный...
C++ Что делают операторы switch/case http://www.cyberforum.ru/cpp-beginners/thread39069.html
что делают функции : switch ? case ?
C++ Как узнать дату изменения файла? Как узнать дату изменения файла? Покажите, пожалуйста, на примере подробнее

Показать сообщение отдельно
Manifik
8 / 8 / 1
Регистрация: 13.05.2009
Сообщений: 31

номер максимального элемента массива - C++

09.06.2009, 11:12. Просмотров 629. Ответов 0
Метки (Все метки)

Вариант 7. В одномерном массиве, состоящем из n вещественных элементов,
вычислить:

1) номер максимального элемента массива;

2)произведение элементов массива, расположенных между первым и вторым
нулевыми элементами.

Преобразовать массив таким образом, чтобы в первой половине
располагались элементы, состоящие в нечетных позициях, а во второй половине -
элементы, состоящие в четных позициях.

Добавлено через 3 минуты 2 секунды
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <locale>
#include <algorithm>
#include <numeric>
#include <iterator>
#include <iostream>
#include <stdexcept>
 
// номер максимального элемента массива
template <typename T, const size_t N>
typename std::iterator_traits<T>::difference_type
max_index(const T (&arr)[N])
{
        return std::distance(arr, std::max_element(arr, arr+N));
}
 
/* произведение элементов массива, расположенных между первым и вторым
нулевыми элементами 
*/
template <typename T, const size_t N>
long mul(const T (&arr)[N])
{
        if (std::count(arr, arr+N, T(0)) < 2)
                throw std::runtime_error("Маловато нулей, насяльника!");
        const int* first = std::find(arr, arr+N, 0);
        const int* second = std::find(first+1, arr+N, 0);
        return std::accumulate(first+1, second, T(1), std::multiplies<T>());
}
 
template <typename T>
struct position : public std::unary_function<T, bool>
{
        position() : pos_(0) {}
        bool operator()(const T&) { return pos_ ++ & 1; }
        typename std::iterator_traits<T>::distance_type pos_;
};
 
/* Преобразовать массив таким образом, чтобы в первой половине
располагались элементы, состоящие в нечетных позициях, а во второй половине - элементы, состоящие в четных позициях.
*/
template <typename T, const size_t N>
T (&reorder(T (&arr)[N]))[N]
{
        std::stable_partition(arr, arr+N, position<T>());
        return arr;
}
 
template <typename T, const size_t N,
        typename _E, typename _Tr,
        template <typename, typename> class OS>
static OS<_E, _Tr>& operator << (OS<_E, _Tr>& os, const T (&arr)[N])
{
        const _E sep[] = { _E(' '), 0 };
        std::copy(arr, arr+N, std::ostream_iterator<T>(os, sep));
        return os;
}
 
int main()
{
        int arr[] = { 1, 0, 3, -1, 8, -6, 0, 2, 5};
 
        setlocale (LC_ALL, ".1251");
 
        std::cout << "Исходный массив: " << arr << std::endl;
        std::cout << "Номер максимального элемента: " << max_index(arr) << std::endl;
        std::cout << "Произведение элементов: " << mul(arr) << std::endl;
        std::cout << "Преобразованный массив: " << reorder(arr) << std::endl;
 
        return 0;
}
Добавлено через 50 секунд
Переделайте пожалуйста на СИ, а то такую не сдать (
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru