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

Шаблоны функций c++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ файлы в c++ http://www.cyberforum.ru/cpp-beginners/thread335782.html
есть текстовый файл. нужно создать другой текстовый файл и переписать, определенное количество символов. файл читать в произвольном доступе с помощью seekg. и сразу символы, переписывать из одного...
C++ Кто нибудь знает как написать игру на С ?) Зраствуйте Можно ли написать крестики нолики на С ? И как это сделать ? Дайте идею или код. Спасибо за внимание. http://www.cyberforum.ru/cpp-beginners/thread335736.html
C++ Вопрос по поводу кода
Здраствуйте я делаю крестики нолики и возник вопрос #include <iostream> using namespace std; void main () { int pole ={0}; cout<<"_|_|_"<<endl; cout<<"_|_|_"<<endl;
HTML GUI C++
Есть окно графическая часть на которого реализована на HTML GUI. Может ли кто-то подсказать, как найти програмно элементы управления и проклацать их? Или может кто знает где написано как это делать?...
C++ Предоставить пользователю цвет фона и текста http://www.cyberforum.ru/cpp-beginners/thread335709.html
Доброго вечера всем! Нужна ваша помощь! Задача такова-Нужно предоставить пользователю выбирать цвет фона и текста в диал.окне(Visual Studio) с помощю system color Знания минимальные!!! попробовал...
C++ подскажите плз дали мне задачу набросать простенький калькулятор, все работает , только когда уже открываеш экзешник как только получаеш результат и прочитать не успеваеш как окно закрывается ... что можно с жтим... подробнее

Показать сообщение отдельно
Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90

Шаблоны функций c++ - C++

24.07.2011, 12:37. Просмотров 2687. Ответов 8
Метки (Все метки)

Хэллоу фрэндс!

Столкнулся с проблеммой в решении упражнения. Вот условие:
Создайте шаблонную функцию maxn(), которая принимает в качестве аргумента массив элементов типа Т и целое число, представляющее собой количество элементов в массиве, и возвращает элемент с наибольшим значением. Проверьте ее в программе, которая использует шаблон данной функции с массивом из шести значений типа int и с массивом из четырех значений типа double. Программа также должна включать специализацию, которая использует в качестве аргумента массив указателей на char и количество указателей в качестве второго аргумента, а затемвозвращает адрес самой длинной строки. Если имеется более одной строки наибольшей длины, функция возвращает адрес первой из них. Выполните проверку специализации на примере массива, состоящего из юпяти указателей на строки.

Я создал такой код:
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
template <typename T>
T maxn(T *arr, int ArSize);
template <> char maxn (char **arr, int ArSize);
 
int main()
{
    cout << "Enter 6 integers to define the biggest: ";
    int array_int[6];
    cin >> array_int[0] >> array_int[1] >> array_int[2] >> array_int[3] >> array_int[4] >> array_int[5];
    maxn(array_int, 6);
    cout << array_int[0];
    
    cout << "\nEnter 4 numbers to define the biggest: ";
    double array_do[4];
    cin >> array_do[0] >> array_do[1] >> array_do[2] >> array_do[3];
    maxn(array_do, 4);
    cout << array_do[0];
    
    char *array_str[5];
    char *str1 = "It's the first string";
    char *str2 = "It's the second string";
    char *str3 = "It's the third string";
    char *str4 = "It's the fourth string";
    char *str5 = "It's the fith string";
    array_str[0] = str1;
    array_str[1] = str2;
    array_str[2] = str3;
    array_str[3] = str4;
    array_str[4] = str5;
    maxn(*array_str, 5);
    cout << "The longest string is " << array_str[0];
    
    system("pause > nul");
    return EXIT_SUCCESS;
}
 
template <typename T>
T maxn(T *arr, int ArSize)
{
         for (int i = 0; i < ArSize; i++)
         {
             if (arr[0] < arr[i])
             {
                    T temp = arr[0];
                    arr[0] = arr[i];
                    arr[i] = temp;
             }
         }
         return arr[0];
}
 
template <> char maxn (char **arr, int ArSize)
{
         for (int i = 0; i < ArSize; i++)
         {
             if (arr[0] < arr[i])
             {
                    char *temp = arr[0];
                    arr[0] = arr[i];
                    arr[i] = *temp;
             }
             if (arr[0] = arr[i])
             {
                    char *temp = arr[0];
                    arr[0] = arr[i];
                    arr[i] = *temp;
             }
         }
         return *arr[0];
}
Компилятор ругается на 8-ую строку "template-id `maxn<>' for `char maxn(char**, int)' does not match any template declaration", и на 58-ую строку "template-id `maxn<>' for `char maxn(char**, int)' does not match any template declaration; invalid function declaration".

Объясните пожалуйта, что не правильно и как исправить.
Заранее сэнкс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru