Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2017, 05:26   #1
Valera97
 
Регистрация: 12.06.2016
Сообщений: 8
Восклицание независимо управлять типом входных данных массива для определения сред. ариф. и возвращаемым значением функции

Нужно сделать чтобы можно было независимо управлять типом входных данных массива для определения сред. ариф. и возвращаемым значением функции


Код:
#include <iostream>
#include <ctime>
#include <clocale>
template<typename T> T avg(const int*, int);
int main(void)
{
setlocale(LC_ALL,"Rus");
srand(time(0));
const int length_array = 10;
int vector[length_array];
for (int counter = 0; counter < length_array; counter++) {
vector[counter] = rand() % 100;
std::cout << vector[counter] << " ";
}
std::cout << "\nсреднее арифметическое DOUBLE = " << avg<double>(vector, length_array) << std::endl;
std::cout << "\nсреднее арифметическое INT = " << avg<int>(vector, length_array) << std::endl;
system("pause"); return (int)NULL;
}
// avg < возвращаемый_тип > ( массив, размер массива);
template<typename T> T avg(const int *arrayPtr, int size_array)
{
T sum = 0; // хранение суммы элементов массива
for (int counter = 0; counter < size_array; counter++)
sum += arrayPtr[counter]; // накапливаем сумму
return sum/(T)size_array; // возвращаем среднее арифметическое
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 29.05.2017 в 10:04.
Valera97 вне форума Ответить с цитированием
Старый 30.05.2017, 14:51   #2
Valera97
 
Регистрация: 12.06.2016
Сообщений: 8
По умолчанию помогите найти ошибку в коде

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


Код:
#include <iostream>
#include <ctime>
#include <clocale>
template< typename T >
T avg( const T* arr, size_t size_arr )
{
T sum = 0;

for ( size_t i = 0; i < size_arr; ++i )
sum += arr[ i ];

return sum / size_arr;
}
int main(void)
{
setlocale(LC_ALL,"Rus");
srand(time(0));
const int length_array = 10;
int vector[length_array];
for (int counter = 0; counter < length_array; counter++) {
vector[counter] = rand() % 100;
std::cout << vector[counter] << " ";
}
std::cout << "\nсреднее арифметическое DOUBLE = " << avg<double>(vector, length_array) << std::endl;
std::cout << "\nсреднее арифметическое INT = " << avg<int>(vector, length_array) << std::endl;
system("pause"); return (int)NULL;
}
// avg < возвращаемый_тип > ( массив, размер массива);
template<typename T> T avg(const int *arrayPtr, int size_array)
{
T sum = 0; // хранение суммы элементов массива
for (int counter = 0; counter < size_array; counter++)
sum += arrayPtr[counter]; // накапливаем сумму
return sum/(T)size_array; // возвращаем среднее арифметическое
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 30.05.2017 в 15:01.
Valera97 вне форума Ответить с цитированием
Старый 30.05.2017, 15:18   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Ну во-первых, в чём смысл делать T size_arr и T i = 0, если очевидно, что это чистый int?

Код:
T avg( const T* arr, T size_arr )
{
T sum = 0;

for ( T i = 0; i < size_arr; ++i )
sum += arr[ i ];

return sum / size_arr;
}
Во-вторых, если у Вас:

Код:
const int length_array = 10;
int vector[length_array];
то каким образом должно получиться:
Код:
avg<double>(vector, length_array)
Хотите дубль - подавайте на вход вектори дублёвого типа

Уберите отсюда <double> - ошибка исчезнет. Правда, и программа неправильно будет работать, как я понимаю?

P.S. Да и вот эти <double> и <int> необязательны - выходной тип будет определяться по типам входных параметров
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 30.05.2017 в 15:22.
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графический интерфейс для определения двухмерного массива (С++) Despin Помощь студентам 0 19.03.2014 14:56
Для матрицы и массива (заданы номера столбцов) найти минимальные элементы, поместить в массив, найти сред. ариф.(Delphi) nucweapon Помощь студентам 5 26.10.2011 09:37
Массив случайных чисел, сред. ариф. vladxxl Общие вопросы C/C++ 1 27.11.2010 23:52
Функции с произвольным кол-вом входных и выходных данных в Matlab ponchikpk Помощь студентам 0 06.10.2010 17:48
Исправьте программу для определения минимального элемента линейного массива Х Figushkin Помощь студентам 1 22.05.2010 09:23