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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2009, 16:58   #1
liver1981
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 20
Вопрос Шаблон функции

Господа, более опытные программеры, оч нужен ваш совет:

Условие: Написать шаблон функции для поиска среднего арифметического значений массива.

Мой код:

#include <iostream>
using namespace std;
template <typename X> X My (X Y[])
{
int x [6];
float res=0;
for (int i=0;i<6;i++)
res+=x[i];
res/=6;
return res;
}
void main ()
{
int x[6] = {10, 20, 30, 40, 50, 60};
cout << "(6,x) = " << My(x);
}

Исправьте, пожалуйста! Где я ошибся?

Последний раз редактировалось liver1981; 03.04.2009 в 17:00.
liver1981 вне форума Ответить с цитированием
Старый 03.04.2009, 17:14   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Зачем вам объявлять массив внутри функции, если вы его принимаете как аргумент? Тем более, еще и целочисленного типа..
Код:
template <typename X>
X My (X Y[])
{
float res=0;
for (int i=0;i<6;i++)
res+=Y[i];
res/=6;
return res;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.04.2009, 17:19   #3
liver1981
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 20
По умолчанию

Урррра!

рабочий код:

#include <iostream>
using namespace std;
template <typename X> X My (X Y[])
{
float res=0;
for (int i=0;i<6;i++)
res+=Y[i];
res/=6;
return res;
}
void main ()
{
int x[6] = {10, 20, 30, 40, 50, 60};
cout<<My(x)<<endl;
}

Я видел эту ошибку, но не знал, что с ней делать. Массив где тока не обьявлял уже. Ну никак не мог догадаться что нада Y[i] написать:

res=Y[i]+res;

Вот в чём моя ошибка была!!!
ещё раз спасибо Вам огромное!!!!!!!

Последний раз редактировалось liver1981; 03.04.2009 в 17:22.
liver1981 вне форума Ответить с цитированием
Старый 03.04.2009, 17:21   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

liver1981, вообще, я бы написал так:
Код:
template <typename X, size_t N>
X My (X (&Y)[N])
{
float res=0;
for (int i=0;i<N;i++)
res+=Y[i];
res/=N;
return res;
}
Тогда не будет привязки к конкретному размеру.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.04.2009, 17:35   #5
liver1981
Пользователь
 
Регистрация: 25.03.2009
Сообщений: 20
По умолчанию

ухтышка, спасибо! я ещё даже не слышал о таком способе)
liver1981 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблон сайта шКОЛЯР HTML и CSS 18 29.01.2009 11:23
Шаблон кисти estet_ua Общие вопросы Delphi 3 29.12.2008 02:06
Шаблон функции срвнения. Определить тип. Иллидан Общие вопросы C/C++ 3 30.05.2008 00:44
Нужен шаблон Студэнт Помощь студентам 1 24.12.2007 20:17