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

Шаблон функции. Некорректная работа - C++

Восстановить пароль Регистрация
 
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
18.03.2013, 22:03     Шаблон функции. Некорректная работа #1
Здравствуйте. Проблема такая: ниже приведенный код почему то некорректно отображает вызовы со всеми последующими массивами после float в качестве аргументов. Подскажите пожалуйста почему? И как исправить?

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
#include <iostream>
using namespace std;
template<class Val>
//////////////////////////////////////////
Val avg( Val* arr[], const int SIZE )
{
 for( int j = 0; j < SIZE; j++)
 {
  Val temp += arr[j];
 }
 temp /= SIZE;
 return temp;
}
//////////////////////////////////////////
int main( int argc, char* argv[] )
{
 const int SZ = 5;
 float arr1[SZ] = { 24.23, 12.7, 9.2, 7.9, 5.4 };
 float tv1 = avg( arr1, SZ );
 ///////////////////////////////////////////////////
 int arr2[SZ] = { 27, 15, 17, 88, 48 };
 int tv2 = avg( arr2, SZ );
 ///////////////////////////////////////////////////
 long arr3[SZ] = { 52, 64, 78, 92, 33 };
 long tv3 = avg( arr3, SZ );
 system("PAUSE");
 return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2013, 22:03     Шаблон функции. Некорректная работа
Посмотрите здесь:

Некорректная работа цикла for. C++
Некорректная работа компилятора C++
C++ Некорректная работа rand()
Некорректная работа функции pow C++
C++ Некорректная работа cin.getline()
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
18.03.2013, 22:04     Шаблон функции. Некорректная работа #2
Цитата Сообщение от fuzzytoozy Посмотреть сообщение
C++
1
Val temp += arr[j];
Каждый раз создаете новую переменную?
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
18.03.2013, 22:13  [ТС]     Шаблон функции. Некорректная работа #3
ах да. Не исправленный код вставил. Вот так. Все равно не работает.
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
#include <iostream>
using namespace std;
template<class Val>
//////////////////////////////////////////
Val avg( Val* arr, const int SIZE )
{
 Val temp;
 
 for( int j = 0; j < SIZE; j++)
 {
  temp += arr[j];
 }
 temp /= SIZE;
 return temp;
}
//////////////////////////////////////////
int main( int argc, char* argv[] )
{
 const int SZ = 5;
 float arr1[SZ] = { 24.23, 12.7, 9.2, 7.9, 5.4 };
 int arr2[SZ] = { 27, 15, 17, 88, 48 };
 long arr3[SZ] = { 52, 64, 78, 92, 33 };
 cout << avg( arr1, SZ ) << endl;
 cout << avg ( arr2, SZ ) << endl;
 cout << avg ( arr3, SZ ) << endl;
 
 system("PAUSE");
 return 0;
}
Добавлено через 28 секунд
последние 2 вызова функция возвращает значения похожие на адрес памяти. При каждом запуске различные. Почему?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
18.03.2013, 22:18     Шаблон функции. Некорректная работа #4
C++
1
Val temp=0;
Добавлено через 45 секунд
Переменная temp не инициализирована, так что складываете со случайным значением, которое было в памяти. Отсюда и разные результаты.
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
18.03.2013, 22:19  [ТС]     Шаблон функции. Некорректная работа #5
оох и правда. thank you very much =*
Yandex
Объявления
18.03.2013, 22:19     Шаблон функции. Некорректная работа
Ответ Создать тему
Опции темы

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