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

Вычисления максимального элемента массива с явной специализацией для строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как исправить ошибки C2065, C2109 в этой программе? http://www.cyberforum.ru/cpp-beginners/thread386177.html
error C2065: is: необъявленный идентификатор error C2109: для индекса требуется массив или указатель что это за ошибки и как их исправить задача, кстати из этой программы # include...
C++ циклический сдвиг написать программу на СИ (обычном ,НЕ Си++), используя символьные массивы : Если число отрицательных элементов масива А чётно,то осуществить циклический сдвиг элементов массива на 4 позиции ... http://www.cyberforum.ru/cpp-beginners/thread386176.html
C++ Условный оператор (Dev C++)
Надо написать программу на dev-c++ , в которой имеется две функции: главная и пользовательская для вычисления выражения. При этом необходимо запросить у пользователя вещественное число и вывести...
C++ Вывести числа из файла
Есть файл, в котором записаны 3 числа. Нужно вывести их, минуя пробелы. Вроде всё получается, но только 2 раза, т.е.если создать цикл, то числа выводятся только 2 раза. На третий раз не выводится...
C++ Ошибка при записи в файл http://www.cyberforum.ru/cpp-beginners/thread386166.html
Помогите добить задачку на С++. В общем прога работает правильно вот только когда идет запись в файл, то в файле находятса не данные структуры а какие-то символи #include <iostream> #include...
C++ Запуск потока Создаю поток и по запуску приложения он должен выполняться. Точнее должна выполняться процедура Connect(); Но ничего не происходит ... все запускается нормально и все процедуры вроде бы выполняются... подробнее

Показать сообщение отдельно
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255

Вычисления максимального элемента массива с явной специализацией для строк - C++

18.11.2011, 19:18. Просмотров 784. Ответов 6
Метки (Все метки)

Здравствуйте! Всех студентов с праздником!

Возможно тема заезженная!


Возникла такая проблемка, нужно вычислить максимальный элемент одномерного массива с явной специализацией шаблонной функции для строк (тип 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
#include <iostream>
#include <cstring>
using namespace std;
 
template <typename T>
T maximum(T v1, T v2, T v3)
{
T max = v1;
 if (v2 > max)
 max = v2;
 if(v3 > max)
 max = v3;
 return max;
}
//эта функция замещает обобщенную версию
// функции maximum(),
//для нахождения максимума среди  строк
template<>
char* maximum<char*>(char *v1, char* v2, char* v3)
{//выполняем лексикографическое сравнение строк
       char * max = v1;
       if(strcmp(v2,max)> 0)
         max = v2;
       if(strcmp(v3,max)> 0)
          max = v3;
return max;
}
int main()
{ 
//версия char
char * s1="Victorov", *s2="Antonov", *s3="Victor";
cout<<"max="<<maximum(s1,s2,s3)<<"\n";        //версия char*
return 0;
}
Как найти этот максимум в символьном массиве с явной специализацией[/B]шаблонной функции, не получается передать размер массива в функцию!!


Спасибо!

Добавлено через 22 часа 1 минуту
Вот сделал шаблонную функцию для нахождения максимума в массиве!

Работает понятно дело с int, float, double

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
#include "iostream"
#include "fstream"
 
 
using namespace std;
 
template<int n, typename T>
void InitMas(T *mas)      //передача массива
{  
    for(int i = 0; i < n; ++i)
    {
        cout << mas[i] << " "; 
    }
}
 
template <typename T>
T max(T *mas, int n )
{
  T max = mas[0];
  for ( int i = 1; i < n; ++i )
  {
    if ( mas[i] > max )
    {
      max = mas[i];
    }
  }
    return max;
}
 
int main()
{ 
    setlocale(LC_CTYPE,"Russian"); //русский шрифт в консоле
    int *a; //объявляем указатель на целочисленный массив 
    
    const int n = 50; //размер целочисленного массива
    
    
    a = new int [n]; //динамический масив из целых чисел 
    
    cout << "Одномерный массив целых чисел(заполненный случайными числами)" << endl << endl;
    for(int i = 0; i < n; ++i)
    {
        a[i] = rand()*50/ RAND_MAX; //заполняем массив случайным числами от 0 до 50
    }
    InitMas<n>(a); //выводим целочисленный массив на консоль с помощью шаблонной функции InitMas
    cout << "\n\nМаксимальный элемент целочисленного массива - "<< max(a, n); //ищем максимальный элемент массива
 
system("pause >> null");
return 0;
}
Работает без проблем!

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