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

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

Войти
Регистрация
Восстановить пароль
 
DareDeviL
2 / 2 / 0
Регистрация: 21.11.2010
Сообщений: 43
#1

Шаблоны функции - C++

09.01.2012, 17:19. Просмотров 449. Ответов 8
Метки нет (Все метки)

Реализуйте следующие задание с использованием шаблона функции. Продемонстрируйте вызов шаблона для различных типов данных.
Работа с одномерными массивами.
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1. Произведение отрицательных элементов массива.
Задание 2: Работа с двумерными массивами.
Дана целочисленная прямоугольная матрица. Определить:
1. Произведение элементов в тех строках, которые не содержат нулевых элементов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2012, 17:19     Шаблоны функции
Посмотрите здесь:

C++ Шаблоны функции
шаблоны функции C++
C++ Шаблоны функции
C++ Функции-шаблоны
C++ Функции-шаблоны
C++ Функции-Шаблоны в С++
Шаблоны функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.01.2012, 17:27     Шаблоны функции #2
Готовыми из algorithm можно пользоваться?
DareDeviL
2 / 2 / 0
Регистрация: 21.11.2010
Сообщений: 43
09.01.2012, 17:29  [ТС]     Шаблоны функции #3
нет нельзя(
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.01.2012, 17:41     Шаблоны функции #4
Цитата Сообщение от DareDeviL Посмотреть сообщение
нет нельзя(
А, не, ошибся, accumulate в numeric же. Ну, не суть.
Цитата Сообщение от DareDeviL Посмотреть сообщение
1. Произведение отрицательных элементов массива.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template <class Iterator, class T, class BinaryOperation>
T product(Iterator first, Iterator last, T init, BinaryOperation op)
{
    while(first != last)
        init = op(init, *first++);
    return init;
}
 
template <class T> 
T isNegative(T init, T num)
{
    return ((num < 0) ? (init * num) : (init));
}
//вызов
int arr[size];
std::cout << product(arr, arr + size, 1, isNegative<int>);
Разбил на 2 функции. Корректно работает, если в массиве точно будет отрицательный элемент. Иначе придется передавать еще переменную bool, поскольку какое бы не возвращали значение при отсутствии отрицательных элементов - все это можно будет свалить на тесте.
DareDeviL
2 / 2 / 0
Регистрация: 21.11.2010
Сообщений: 43
09.01.2012, 17:47  [ТС]     Шаблоны функции #5
это оба задания? можно весь код?
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.01.2012, 17:49     Шаблоны функции #6
Ну а во второй можно вызвать для каждой строки нижеследующую функцию, либо проверять для каждой строки наличие нулевых элементов и в результате этого вызывать.
C++
1
2
3
4
5
6
7
8
9
10
11
template <class Iterator, class T>
T product(Iterator first, Iterator last, T init)
{
    while(first != last)
        init *= *first++;
    return init;
}
//вызов
int arr[rows][cols];
for(int i = 0; i < rows; ++i)
    std::cout << product(arr, arr + cols, 1);
Добавлено через 1 минуту
Цитата Сообщение от DareDeviL Посмотреть сообщение
можно весь код?
Там просто main дописать, не справитесь что ли?
DareDeviL
2 / 2 / 0
Регистрация: 21.11.2010
Сообщений: 43
09.01.2012, 17:50  [ТС]     Шаблоны функции #7
пробовал..кучу ошибок выбивает
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
09.01.2012, 17:53     Шаблоны функции #8
Давайте код который пробовали, будем править.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2012, 18:16     Шаблоны функции
Еще ссылки по теме:

C++ Шаблоны функции | C++
Шаблоны функции | C++ C++
Шаблоны функции C++
Шаблоны функции C++

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

Или воспользуйтесь поиском по форуму:
DareDeviL
2 / 2 / 0
Регистрация: 21.11.2010
Сообщений: 43
09.01.2012, 18:16  [ТС]     Шаблоны функции #9
я уже удалил((
Yandex
Объявления
09.01.2012, 18:16     Шаблоны функции
Ответ Создать тему
Опции темы

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