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

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

Восстановить пароль Регистрация
 
mazamode
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 15
19.03.2012, 13:17     шаблон функции #1
подсчитать среднее арифметическое элементов расположенных выше главной диагонали. Непойму где ошибка.
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
30
31
32
#include<iostream>
using namespace std;
template<typename X>
void printArray(char *name, X *mas, int n)
{
cout<<name;
for(int i=0; i<n; ++i)
for(int j=0; j<n; ++j)
cout<<mas[i,j]<<"\t";
}
template<typename X>
X F(X *mas,int n)
{
int s=0;
X sum;
for (int i=1; i<=n; ++i)
for (int j=1; j<=n; ++i)
if(j>i) { s++; sum+=mas[i,j];}
return sum/s;
}
int main()
 
{/*int n;
    int mas[3][3];
for(int i=0; i<n; ++i)
for(int j=0; j<n; ++j){cin>>mas[i][j];}*/
 
int mas[3][3]={{1,2,3},{4,5,6},{7,8,9}};
    int sreadarA=F(mas,3);
printArray("Array mas:",mas,3);
cout<<"sredar(mas)="<<sreadarA<<endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2012, 13:17     шаблон функции
Посмотрите здесь:

C++ Шаблон функции
шаблон функции C++
Шаблон функции C++
C++ Шаблон функции
C++ Шаблон функции
шаблон функции. Задачей функции является округление вышеуказанного вещественного числа с заданной точностью C++
C++ c++ шаблон функции
Шаблон функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
19.03.2012, 13:36     шаблон функции #2
1.
C++
1
X sum=0;
в 15 строке
2.
C++
1
for (int j=1; j<=n; ++j)
в 17 строке
3.
раз уж
C++
1
2
template<typename X>
X F(X *mas,int n)
то в 29 строке
C++
1
int sreadarA=F(*mas,3);
Добавлено через 1 минуту
ну и
C++
1
printArray("Array mas:",*mas,3);
, чтоб выводились значения а не указатели

Добавлено через 5 минут
и среднее ар. тебе даст неправильно потому что инты везде, а в твоем примере сред.ар = 11/3
-=ЮрА=-
Заблокирован
Автор FAQ
19.03.2012, 14:00     шаблон функции #3
Код ниже создаёт целочисленную и вещественную матрицу заполненных случ числам
Потом посредством шаблона функции вывода мы светим эти массивы(одна функция работает с целыми и вещественными), а затем шаблоном getSum(int size, T ** arr, T &sum) находим сумму элементов выше главной диагонали и их число, затем поделив sum/count получаем ср арифметическое
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//http://www.cyberforum.ru/cpp-beginners/thread522205.html#post2811596
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
 
template <class T>
long getSum(int size, T ** arr, T &sum)
{
    int i, j;
    sum = 0;
    long count = 0;
    for(i = 0; i < size; i++) 
    for(j = 0; j < size; j++)
    {
        if(i < j)
        {
            sum += arr[i][j];
            count++;
        }
    }
    return count;
}
 
template <class T>
void outvec(int size, T * vec)
{
    for(int i = 0; i < size; i++)
        cout<<setw(4)<<vec[i]<<" ";
    cout<<endl;
}
 
template <class T>
void outarr(int size, T ** arr)
{
    for(int i = 0; i < size; i++)
        outvec(size, arr[i]);
}
 
int main()
{
    int i,j,size;
    cout<<"Enter size : ";cin>>size;
    int ** i_mas    = new int   *[size];
    double ** d_mas = new double*[size];
    int    i_sum = 0;
    double d_sum = 0;
    srand(time(NULL));
    for(i = 0; i < size; i++)
    {
        i_mas[i] = new int[size];
        d_mas[i] = new double[size];
        for(j = 0; j < size; j++)
        {
            i_mas[i][j] = rand()%10 - 5;
            d_mas[i][j] = (rand()%100 - 50)/10.0;
        }
    }
    cout<<"Int    array :\n";
    outarr(size,i_mas);
    cout<<"Double array :\n";
    outarr(size,d_mas);
    long count = getSum(size, i_mas, i_sum);
    cout<<"srArifm    int Array = "<<(1.0*i_sum)/count<<endl;
    count = getSum(size, d_mas, d_sum);
    cout<<"srArifm double Array = "<<(1.0*d_sum)/count<<endl;
    delete [] i_mas;
    delete [] d_mas;
    system("pause");
    return 0;
}
Миниатюры
шаблон функции  
Yandex
Объявления
19.03.2012, 14:00     шаблон функции
Ответ Создать тему
Опции темы

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