Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параметризованная функция вычисления среднего ариф 
:(
    Опции темы
NailS
  Дата 1.6.2017, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 1.6.2017

Репутация: нет
Всего: нет



ПОМОГИТЕ НАЙТИ ОШИБКУ smile 
Параметризованная функция вычисления среднего арифметического значения массива элементов ,чтобы можно было независимо управлять типом входных данных массива для определения сред. ариф. и возвращаемым значением функции


Код

#include <iostream>
#include <ctime>
#include <clocale>
template< typename T >
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;
}
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(vector, length_array) << std::endl;
std::cout << "\nсреднее арифметическое INT = " << avg(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; // возвращаем среднее арифметическое
}



Это сообщение отредактировал(а) NailS - 1.6.2017, 15:22
PM MAIL   Вверх
ss
Дата 1.6.2017, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 17.5.2007

Репутация: нет
Всего: нет



ошибка во всей программе.

шаблон функ. задается вот так  func<int>(arg)
тогда массива с данными должно быть два для double и для int. (или хитро пытаться кастовать)

функ. в строках 29-35 нужно удалить т.к. она неправильная и не видна в функ main - она описана ниже.


Код

#include <iostream>
#include <ctime>
#include <clocale>
template< typename T >
T avg( const T* arr, unsigned int size_arr )
{
    T sum = 0;
    for ( unsigned int 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];
    double vectorDouble[length_array];

    for (int counter = 0; counter < length_array; counter++)
    {
        vector[counter] = rand() % 100;
        vectorDouble[counter] = vector[counter];
        std::cout << vector[counter] << " ";
    }

    std::cout << "\nсреднее арифметическое DOUBLE = " << avg<double>(vectorDouble, length_array) << std::endl;
    std::cout << "\nсреднее арифметическое INT = " << avg<int>(vector, length_array) << std::endl;
    system("pause");
    return (int)NULL;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1022 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.