Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/30: Рейтинг темы: голосов - 30, средняя оценка - 4.67
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98

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

02.04.2011, 01:39. Показов 6612. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не совсем понимаю, как работают шаблоны функций , в учебнике только дан пример и не объяснено ниче(
САма программа готовая есть, надо переделать с шаблонами но не знаю как
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
#include<iostream.h>
 
template<class T> T max(T *a, int m, int n);
int nuts(int **a, int m, int n);
int nuts1(int **a, int m, int n);
 
int main()
{
    int **a=NULL;
    int m, n;
    int i, h =0;
    cout<<"Vvod razmernosti"<<endl;
    cout<<"m: ";
    cin>>m;
    cout<<"n: ";
    cin>>n;
    a= new int *[m];
 
    cout<<"Vvod matricy iz "<<m;
    cout<<" strok i "<<n<<" stolbov: ";
    cout<<endl;
    for(i=0;i<m;i++)
    {
        a[i]=new int [n];
        for (int j=0; j<n; j++)
            cin>>a[i][j];
    }
    for (i=0;i<m;i++)
    {
        cout<<endl;
        for (int j=0; j<n;j++)
            cout<<a[i][j]<<"  ";
    }
    cout<<"Chislo strok bez '0' : "<<nuts(a,m,n)<<'\n';
    cout<<endl;
    cout<<"Naib. chislo: "<<nuts1(a,m,n)<<'\n';// else cout<<"Net povtorov"<<'\n';
    cout<<endl;
    delete[] a;
    return 0;
}
int nuts(int **a, int m, int n)
{
    int h;
    h=0;
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
            if(a[i][j]==0) break;
            if(j==n) h++;
    }
    return h;
}
int nuts1(int **a, int m, int n)
{
    int max=0; //bool fl=false;
    for (int i=0; i<m;i++)
        for (int j=0; j<n;j++)
            if ((/*fl && */a[i][j]>max)/* || (!fl)*/)
            {
                for (int l=0; l<m; l++)
                    for (int p=0;p<n;p++)
                        if (a[l][p]==a[i][j] && (l!=i ||p!=j))
                        {
                    //      if(!fl) fl=true;
                            max=a[i][j];
                            l=m;
                            break;
                        }
                    //  cout<<"\n";
                    //  if (fl===true) cout <<"Naib. chislo:  "<<
            }
                        return max;
            }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2011, 01:39
Ответы с готовыми решениями:

Шаблоны функций
Написала прогу на шаблоны функций. не могу понять где ошибка // функции.cpp: определяет точку входа для консольного приложения. // ...

Шаблоны функций.
Написать шаблон функции, осуществляющей обработку линейного массива. Тип и размер массива передаются как параметры шаблона ( &lt;class T,...

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

37
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
07.04.2011, 08:54
Студворк — интернет-сервис помощи студентам
Вынос реализации функций в отдельный файл позволяет окончательно детали этой реализации скрыть путём компиляции его отдельного от остального проекта, но заголовки функций всё равно включать во все файлы, где есть вызов этих функций, что необходимо для их использования, так как иначе вызов просто не возможен. Библиотеки функций и отдельные модули с функциями - три различные реализации такого подхода. Библиотеки считаются за две реализации, так как они бывают со статическим и динамическим связыванием. Только я не понял, при чём здесь класс.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
07.04.2011, 09:00
Цитата Сообщение от taras atavin Посмотреть сообщение
но заголовки функций всё равно включать во все файлы, где есть вызов этих функций
Это требование распространяется и на не шаблонные функции.)
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
15.04.2011, 03:07  [ТС]
а ккак с вызово шаблонов, или там просто от функции так и оставить?...
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.04.2011, 06:36
Шаблоны вызывать нельзя. Шаблон пишется для того, чтоб по нему сгенерить несколько версий функции, а вызываюстя уже эти версии так, как если бы функция была перегружена обычным способом.
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
24.04.2011, 17:38  [ТС]
Первый пункт , прога тока целые элементы массива принимает

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
#include<iostream.h>
 
template <typename T1> 
T1 nuts(T1 **a, int m, int n){
 
        int h;
        h=0;
        for(int i=0;i<m;i++)
        {
                for(int j=0;j<n;j++)
                        if(a[i][j]==0) break;
                        if(j==n) h++;
        }
        return h;
}
int main()
{
        int **a=NULL;
        int m, n;
        int i, h =0;
        cout<<"Vvod razmernosti"<<endl;
        cout<<"m: ";
        cin>>m;
        cout<<"n: ";
        cin>>n;
        a= new int *[m];
 
        cout<<"Vvod matricy iz "<<m;
        cout<<" strok i "<<n<<" stolbov: ";
        cout<<endl;
        for(i=0;i<m;i++)
        {
                a[i]=new int [n];
                for (int j=0; j<n; j++)
                        cin>>a[i][j];
        }
        for (i=0;i<m;i++)
        {
                cout<<endl;
                for (int j=0; j<n;j++)
                        cout<<a[i][j]<<"  ";
        }
        cout<<"Chislo strok bez '0' : "<<nuts(a,m,n)<<'\n';
        cout<<endl;
 
        delete[] a;
 
}
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
06.05.2011, 16:55  [ТС]
ругается что тип а неизвестен

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
#include<iostream.h>
 
template <typename T> 
T nuts(T **a)
{
 
    T **a=NULL;
    int m, int n;
    int h;
    h=0;
    int m, n;
    int i, h =0;
    cout<<"Vvod razmernosti"<<endl;
    cout<<"m: ";
    cin>>m;
    cout<<"n: ";
    cin>>n;
    a= new T *[m];
 
    cout<<"Vvod matricy iz "<<m;
    cout<<" strok i "<<n<<" stolbov: ";
    cout<<endl;
    for(i=0;i<m;i++)
    {
        a[i]=new T [n];
        for (int j=0; j<n; j++)
            cin>>a[i][j];
    }
    for (i=0;i<m;i++)
    {
        cout<<endl;
        for (int j=0; j<n;j++)
            cout<<a[i][j]<<"  ";
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
            if(a[i][j]==0) break;
            if(j==n) h++;
    }
    return h;
 
//int nuts(int);
}
 
 
//int nuts(int **a, int m, int n);
//int nuts1(int **a, int m, int n);
 
int main()
{
    //float **a=NULL;
 
    cout<<"strok s '0' : "<<nuts(a)<<'\n';
    cout<<endl;
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.05.2011, 16:58
И я бы ругался. Ты а не объявил, а использовать пытаешься.
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
06.05.2011, 18:17  [ТС]
дак а толку... я тупой наверно)
а я вроде тоже обьявлял и ниче не происходит
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.05.2011, 18:24
Строка 54. Ты передаёшь в функцию несуществующую переменную. У неё нет типа. Компилятор не может инстанцировать функцию. И обижается на тебя. Не обижай компилятор, объяви переменную.
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
06.05.2011, 18:29  [ТС]
а под каким типом тогда ее обьявить и в каком месте??
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.05.2011, 18:41
Под тем типом, который тебе нужен. Объявить ДО использования.
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
06.05.2011, 18:47  [ТС]
дык я не знаю какоготипа, если по идее он в шабоне задается.....
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.05.2011, 18:53
Нет. В шаблоне тип не задаётся.
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
06.05.2011, 18:59  [ТС]
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
#include<iostream.h>
 
template <typename T> 
T nuts(T **a)
{
 
//        T **a=NULL;
   // int m, int n;
        int h;
        h=0;
        int m, n;
        int i =0;
        cout<<"Vvod razmernosti"<<endl;
        cout<<"m: ";
        cin>>m;
        cout<<"n: ";
        cin>>n;
        a= new T *[m];
 
        cout<<"Vvod matricy iz "<<m;
        cout<<" strok i "<<n<<" stolbov: ";
        cout<<endl;
        for(i=0;i<m;i++)
        {
                a[i]=new T [n];
                for (int j=0; j<n; j++)
                        cin>>a[i][j];
        }
        for (i=0;i<m;i++)
        {
                cout<<endl;
                for (int j=0; j<n;j++)
                        cout<<a[i][j]<<"  ";
        }
        for(i=0;i<m;i++)
        {
                for(int j=0;j<n;j++)
                        if(a[i][j]==0) break;
                        if(j==n) h++;
        }
        return h;
 
//int nuts(int);
}
 
 
//int nuts(int **a, int m, int n);
//int nuts1(int **a, int m, int n);
 
int main()
{ 
    
float **a=NULL;
a= new float *[];
int n,m; 
for(int i=0;i<m;i++)
        {
                a[i]=new float [n];
        //        for (int j=0; j<n; j++)
          //              cin>>a[i][j];
        }
         
        cout<<"strok s '0' : "<<nuts(a)<<'\n';
         cout<<endl;
}

вот так правильно?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.05.2011, 19:04
Нет. После инстанцирования будет float** nuts(float** **a)
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
06.05.2011, 19:44  [ТС]
ААААААААА, вс1е, мой мозг кипит)))

Добавлено через 17 минут
напиши как , буду признателен=))
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
06.05.2011, 19:54
Вероятно я наврал и инстанцирование пройдет так: float nuts(float **a)
0
3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98
07.05.2011, 15:34  [ТС]
все равно мне ето ниче не дает.....)))

Добавлено через 21 минуту
дык куды мне еето дело написать??

Добавлено через 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
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include<iostream.h>
 
template <typename T> 
T nuts(T **a)
{
 
        int h;
        h=0;
        int m, n;
        int i =0;
        cout<<"Vvod razmernosti"<<endl;
        cout<<"m: ";
        cin>>m;
        cout<<"n: ";
        cin>>n;
        a= new T *[m];
 
        cout<<"Vvod matricy iz "<<m;
        cout<<" strok i "<<n<<" stolbov: ";
        cout<<endl;
        for(i=0;i<m;i++)
        {
                a[i]=new T [n];
                for (int j=0; j<n; j++)
                        cin>>a[i][j];
        }
        for (i=0;i<m;i++)
        {
                cout<<endl;
                for (int j=0; j<n;j++)
                        cout<<a[i][j]<<"  ";
        }
        for(i=0;i<m;i++)
        {
                for(int j=0;j<n;j++)
                        if(a[i][j]==0) break;
                        if(j==n) h++;
        }
cout<<"Strok bez '0'"<<h;
    cout<<endl;
    //  
 
float   max=0;
    //int m,n;
    for(i=0; i<m; i++)
        for(int j=0; j<n; j++)
        {
            if(a[i][j]>max) 
                for(int l=0; l<m;l++)
                    for(int p=0; p<n; p++)
                    {
                        if((a[i][j]==a[l][p]) && (p!=i || l!=j))
                            max=a[i][j];
                    }
        }
        cout<<"max: "<<max;
        cout<<endl;
    //  cout<<"Strok bez '0'"<<h;
    //  cout<<endl;
    //  cout<<"max: "<<max;
    //  cout<<endl;
return 0;
 
 
       // return h;
 
}
//template<class T1>
//T1 nuts1(T1 **a)
//{
//  float max;
/*  max=0;
    int m,n;
    for(int i=0; i<m; i++)
        for(int j=0; j<n; j++)
        {
            if(a[i][j]>max) 
                for(int l=0; l<m;l++)
                    for(int p=0; p<n; p++)
                    {
                        if((a[i][j]==a[l][p]) && (p!=i || l!=j))
                            max=a[i][j];
                    }
        }
    //  cout<<"max: "<<max;
    //  cout<<endl;
return max;*/
//}
 
 
int main()
{ 
    
float **a=NULL;
a= new float *[];
int n,m; 
for(int i=0;i<m;i++)
        {
                a[i]=new float [n];
        }
         
        /*cout<<"strok bez '0' : "<<*/nuts(a);//<<'\n';
         cout<<endl;
 
//        cout<<"max : "<<max<<'\n';
  //       cout<<endl;
 
}
Добавлено через 32 секунды
много закоментил тока))

Добавлено через 19 часов 6 минут
добрые люди сказали что так сделано правильно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2011, 15:34

Шаблоны функций
Реализовать на языке С++ программу, в которой оформ-лены в виде шаблонов функций (массив передавать в функцию в качестве параметра) :...

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

Шаблоны функций
Задание. 1. Реализовать на языке С++ программу, в которой оформ-лены в виде шаблонов функций (массив передавать в функцию в качестве...

Шаблоны функций
1. Создать новый проект. 2. Добавить к проекту файл исходным кодом (.h и .cpp). 3. Вынести в отдельный модуль шаблоны функции и типы данных...

Шаблоны функций
Добрый вечер! У меня возникли трудности с шаблонами функций. Вот код с шаблоном template &lt;class type,class ttype&gt; ttype...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru