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

Переделать функции в шаблон - C++

Восстановить пароль Регистрация
 
Колямбий
7 / 7 / 0
Регистрация: 18.12.2011
Сообщений: 137
29.04.2013, 11:26     Переделать функции в шаблон #1
lib.h

C++
1
2
3
#pragma once
int **rnd(int sizeA, int sizeB);
int *Conversion(int **array, int sizeA, int sizeB);
file.cpp
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
#include "lib.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int **rnd(int sizeA, int sizeB)
{
    int **array = new int *[sizeA];
    for(int i = 0; i < sizeA; ++i)
        array[i] = new int [sizeB];
 
    std::srand(std::time(NULL));
 
    for(int i = 0; i < sizeA; ++i)
        for(int j = 0; j < sizeB; ++j)
            array[i][j] = std::rand()%100;
    return array;
}
 
int *Conversion(int **array, int sizeA, int sizeB)
{
    int sum = 0;
    int *temp = new int [sizeA];
 
    for (int j = 0; j<sizeB; j++)
    {
        for (int i = 0; i<sizeA; i++)
            {
                
                sum += array[i][j];
                
            }
        temp[j] = sum;
        sum = 0;
    }
    
    
    return temp;
}
v11.cpp
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
#include "lib.h"
#include <iostream>
#include <sstream>
#include <stdlib.h>
 
using namespace std;
 
void main(int argc, char* argv[])
{
    cout << "Исходный массив:\n";
    int sizeA =  6, sizeB = 5;
    if(argc>1)
    {
        sizeA = atof(argv[1]);
        sizeB = atof(argv[2]);
    }
 
    int **array = rnd(sizeA,sizeB);
    for (int i = 0; i < sizeA; i++)
    {
        for (int j = 0; j < sizeB; j++)
            cout << array[i][j] << " ";
        cout << endl;
    }
    int *temp = Conversion(array,sizeA,sizeB);
 
    cout << "После преобразования двумерного массива в одномерный:" << endl;
    for (int i = 0; i < sizeB; i++)
    {
        cout << temp[i] << " ";
    }
    cout << endl;
    //return 0;
    system("Pause");
}
вообще не знаком в шаблонами функций, необходимо вот переделать int **rnd(int sizeA, int sizeB)... и int *Conversion(int **array, int sizeA, int sizeB) в шаблоны, подскажите как сделать

Добавлено через 19 минут
сделал вот так
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
template <class T1> T1 **rnd(T1 sizeA, T1 sizeB);
template <class T2> T2 *Conversion(T2 **array, T2 sizeA, T2 sizeB);
 
 
template <class T2> T2 *Conversion(T2 **array, T2 sizeA, T2 sizeB)
{....
 
template <class T1> 
T1 **rnd(T1 sizeA, T1 sizeB)
{...
но при запуске проги выдает ошибку
Ошибка 3 error LNK2019: ссылка на неразрешенный внешний символ "int * __cdecl Conversion<int>(int * *,int,int)" (??$Conversion@H@@YAPAHPAPAHHH@Z) в функции _main C:\Users\Nik-Mox\documents\visual studio 2010\Projects\v11\v11\v11.obj v11
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2013, 11:26     Переделать функции в шаблон
Посмотрите здесь:

C++ Шаблон функции
Переделать шаблон - функций C++
Шаблон функции C++
C++ Как переделать эту прогу в шаблон классов "Двусвязный список" произвольных элементов
шаблон функции. Задачей функции является округление вышеуказанного вещественного числа с заданной точностью C++
C++ Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон
C++ Переделать класс на шаблон класса
Класс матрицы переделать в шаблон + менюшка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
30.04.2013, 14:25     Переделать функции в шаблон #2
Может всё же как-то так должно быть:
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
template <class T>
T **rnd(int sizeA, int sizeB)
{
    T **array = new T *[sizeA];
    for(int i = 0; i < sizeA; ++i)
        array[i] = new T [sizeB];
 
    std::srand(std::time(NULL));
 
    for(int i = 0; i < sizeA; ++i)
        for(int j = 0; j < sizeB; ++j)
            array[i][j] = std::rand()%100;
    return array;
}
 
template <class T>
T *Conversion(T **array, int sizeA, int sizeB)
{
    int sum = 0;
    int *temp = new T [sizeA];
 
    for (int j = 0; j<sizeB; j++)
    {
        for (int i = 0; i<sizeA; i++)
            {
                
                sum += array[i][j];
                
            }
        temp[j] = sum;
        sum = 0;
    }
    return temp;
}
Yandex
Объявления
30.04.2013, 14:25     Переделать функции в шаблон
Ответ Создать тему
Опции темы

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