3 / 3 / 3
Регистрация: 04.11.2009
Сообщений: 98

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

02.04.2011, 01:39. Показов 6662. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru