6 / 6 / 3
Регистрация: 03.09.2013
Сообщений: 81
1

Шаблонные функции

03.11.2013, 13:24. Показов 519. Ответов 5
Метки нет (Все метки)

С помощью http://ru.wikipedia.org/wiki/Шаблоны_C%2B%2B пытался написать программу с шаблонной функцией по примеру использования который там написан. В итоге выдаёт ошибку там где вызываю функцию. Error: отсутствуют экземпляры функции "bolshe",соответствующие списку аргументов.
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
72
73
// Дана целочисленная прямоугольная матрица A[10][11] . Написать программу, определяющую величины:
// 1) количество элементов матрицы, больших величины B;
// 2) минимальный по модулю элемент матрицы;
// 3) суммы элементов, расположенных по периметру матрицы.
 
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <ctime>
using namespace std;
 
template < typename T >
T bolshe( T **mas,T d)
{
    int koli4estvo = 0;
    for ( int i = 0; i < size; i++ )
    {
        for ( int j = 0; j < size2; j++)
        {
            if ( d < mas[i][j] )
            {
                koli4estvo++;
            }
        }
    }
 
    cout << "Количество элементов больших B = "
         << koli4estvo;
    return **mas;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    srand(time(NULL));
 
    int size,size2;
    cout << "Введите количество строк: ";  // Объявление матрицы
    cin >> size;
    cout << endl
         << "Введите количество столбцов: ";
    cin >> size2;
    cout << endl;
    int **A = new int *[size];
    for ( int i = 0; i < size; i++)
    {
        A[i] = new int [size2];
    }
 
    for ( int i = 0; i < size; i++ )    // Заполнение матрицы случайными числами и вывод
    {
        for ( int j = 0; j < size2; j++ )
        {
            A[i][j] = rand() % 50;
            cout << A[i][j]
                 << "\t";
        }
        cout << endl;
    }
 
    int B;
    cout << "Введите B: ";
    cin >> B;
    bolshe(A[size][size2],B);  // ?????????????????????????????????????????????????
 
    for ( int i = 0; i < size; i++)  // Освобождение памяти для каждого элемента mas[i]
    {
        delete [] A[i];
    }
    delete [] A;
    system("PAUSE");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2013, 13:24
Ответы с готовыми решениями:

Шаблонные функции
Такой код работает. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; using namespace...

Шаблонные функции
Чет не получается написать шаблонную функцию. func.h template &lt;class T&gt; T strnstr (T str, T...

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

Шаблонные функции
Здравствуйте! Помогите сделать в данном коде 2 задания: 1)Сделать тип элемента заданной структуры...

5
9 / 9 / 3
Регистрация: 09.12.2012
Сообщений: 219
03.11.2013, 13:27 2
Лично я не опытен и не понимаю зачем передавать указатель на указатель + что за ошибка?
0
120 / 120 / 47
Регистрация: 29.03.2013
Сообщений: 237
03.11.2013, 13:30 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
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
#include <locale>
#include <ctime>
using namespace std;
 
template < typename T >
T bolshe( T **mas,T d,int size,int size2)
{
    int koli4estvo = 0;
    for ( int i = 0; i < size; i++ )
    {
        for ( int j = 0; j < size2; j++)
        {
            if ( d < mas[i][j] )
            {
                koli4estvo++;
            }
        }
    }
 
    cout << "Количество элементов больших B = "
         << koli4estvo;
    return **mas;
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    srand(time(NULL));
 
    int size,size2;
    cout << "Введите количество строк: ";  // Объявление матрицы
    cin >> size;
    cout << endl
         << "Введите количество столбцов: ";
    cin >> size2;
    cout << endl;
    int **A = new int *[size];
    for ( int i = 0; i < size; i++)
    {
        A[i] = new int [size2];
    }
 
    for ( int i = 0; i < size; i++ )    // Заполнение матрицы случайными числами и вывод
    {
        for ( int j = 0; j < size2; j++ )
        {
            A[i][j] = rand() % 50;
            cout << A[i][j]
                 << "\t";
        }
        cout << endl;
    }
 
    int B;
    cout << "Введите B: ";
    cin >> B;
    bolshe(A,B,size,size2);  
 
    for ( int i = 0; i < size; i++)  // Освобождение памяти для каждого элемента mas[i]
    {
        delete [] A[i];
    }
    delete [] A;
    system("PAUSE");
    return 0;
}
1
6 / 6 / 3
Регистрация: 03.09.2013
Сообщений: 81
03.11.2013, 13:36  [ТС] 4
Цитата Сообщение от Warezovvv Посмотреть сообщение
Лично я не опытен и не понимаю зачем передавать указатель на указатель + что за ошибка?
Error: отсутствуют экземпляры функции "bolshe",соответствующие списку аргументов.

Добавлено через 4 минуты
Цитата Сообщение от scenotaph Посмотреть сообщение
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
#include <locale>
#include <ctime>
using namespace std;
 
template < typename T >
T bolshe( T **mas,T d,int size,int size2)
{
    int koli4estvo = 0;
    for ( int i = 0; i < size; i++ )
    {
        for ( int j = 0; j < size2; j++)
        {
            if ( d < mas[i][j] )
            {
                koli4estvo++;
            }
        }
    }
 
    cout << "Количество элементов больших B = "
         << koli4estvo;
    return **mas;
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    srand(time(NULL));
 
    int size,size2;
    cout << "Введите количество строк: ";  // Объявление матрицы
    cin >> size;
    cout << endl
         << "Введите количество столбцов: ";
    cin >> size2;
    cout << endl;
    int **A = new int *[size];
    for ( int i = 0; i < size; i++)
    {
        A[i] = new int [size2];
    }
 
    for ( int i = 0; i < size; i++ )    // Заполнение матрицы случайными числами и вывод
    {
        for ( int j = 0; j < size2; j++ )
        {
            A[i][j] = rand() % 50;
            cout << A[i][j]
                 << "\t";
        }
        cout << endl;
    }
 
    int B;
    cout << "Введите B: ";
    cin >> B;
    bolshe(A,B,size,size2);  
 
    for ( int i = 0; i < size; i++)  // Освобождение памяти для каждого элемента mas[i]
    {
        delete [] A[i];
    }
    delete [] A;
    system("PAUSE");
    return 0;
}
Интересно то что он не жаловался на переменные size и size2,но факт что теперь работает.
0
574 / 557 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
03.11.2013, 13:37 5
StriBog45, причем здесь шаблонность функции. У вас и обычная таким образом работать не будет.
Что это за вызов такой - bolshe(A[size][size2],B); ?
И откуда внутри функции появляются size и size2?
0
120 / 120 / 47
Регистрация: 29.03.2013
Сообщений: 237
03.11.2013, 13:39 6
StriBog45, Жаловался бы, если вызов функции был бы корректным
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2013, 13:39
Помогаю со студенческими работами здесь

Шаблонные функции
1) Написать шаблонную функцию для нахождения минимального из трех передаваемых чисел (для чисел...

Шаблонные функции
Доброго времени суток. Есть шаблонная функция(двоичный сумматор прямого кода): template &lt;class T&gt;...

Шаблонные функции
Помогите, пожалуйста, реализовать шаблонную функцию определения, есть ли число в массиве

Шаблонные функции
Помогите, пожалуйста, реализовать шаблонную функцию, которая переставляет элементы в массиве

Шаблонные функции
Любимой нужно, это свято... Поэтому прошу помощи... Перегрузить операторы &gt;, &lt;, == для класса...

Шаблонные функции в C++
Каждый раз когда вижу код, который должен быть простым и понятным, я понимаю его немного хуже. Вот...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru