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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
#1

Поиск наибольшей строки - C++

03.12.2012, 18:17. Просмотров 236. Ответов 2
Метки нет (Все метки)

Передо мной стоит задание: использовать шаблонную функцию для нахождения самого большого значения для массивов int и 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
#include <iostream>
using namespace std;
template <class T>
void maxn(T mass[], int n);
template <> void maxn(char * name,int t);
int main()
{
    char * words[5];
    words[0]="Boogy";
    words[1]="Woooodd";
    words[2]="Roooobaniok";
    words[3]="Camay";
    words[4]="Ba";
    int massive_i[6]={1,2,3,4,5,6};
    double massive_d[4]={123,321,2134,222.32};
    maxn(massive_i,6);
    maxn(massive_d,4);
    maxn(words,5);
    cout<<"Bye!\n";
    system("pause");
    return 0;
}
template <class T>
void maxn(T mass[],int n)
{
    T temp=0;
    int i;
    for(i=0;i<n;i++)    {
        if(temp<mass[i])
            temp=mass[i];
    }
    cout<<"Max size is "<<temp<<"\n";
}
template <> void maxn(char * name,int t)
{
    char temp=0;
    int i;
    for(i=0;i<t;i++)    {
        if(temp<name[i])
            temp=name[i];
    }
    cout<<"Max word is "<<temp<<"\n";
}
Сам код работает, однако моя явная специализация чет "барахлит". Дело в том, что она находит самую первую строку, забивает ее во временную переменную, и все - цикл завершен! Никак не могу понять, в чем именно моя ошибка. Подскажите плиз!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 18:17     Поиск наибольшей строки
Посмотрите здесь:

Определить номер строки с наибольшей характеристикой C++
C++ Найти номер строки матрицы с наибольшей суммой элементов
Поиск наибольшей цифры C++
Строки. Удалить слова наибольшей длины C++
Поиск наибольшей суммы подряд следующих элементов массива C++
Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!" C++
C++ Нужно найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!"
Найти строки матрицы с наибольшей и наименьшей суммой элементов C++
Поиск ромба с наибольшей площадью C++
Поиск наибольшей последовательности цифр в файле C++
C++ Поиск в массиве последовательности с наибольшей суммой
Найти номер строки матрицы с наибольшей суммой элементов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
03.12.2012, 19:10     Поиск наибольшей строки #2
Так попробуйте:
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
#include <iostream>
#include <cctype>
using namespace std;
 
template <class T>
void maxn(T*, const size_t);
template <> void maxn(const char* name[], const size_t);
 
int main()
{
    const char * words[5];
    words[0]="Boogy";
    words[1]="Woooodd";
    words[2]="Roooobaniok";
    words[3]="Camay";
    words[4]="Ba";
    int massive_i[6]={1,2,3,4,5,6};
    double massive_d[4]={123,321,2134,222.32};
    maxn(massive_i,6);
    maxn(massive_d,4);
    maxn(words,5);
    cout<<"Bye!\n";
    system("pause");
    return 0;
}
 
template <class T>
void maxn(T* mass, const size_t n)
{
    T temp = mass[0];
    for(size_t i=0; i<n; i++)    {
        if(temp<mass[i])
            temp=mass[i];
    }
    cout<<"Max size is "<<temp<<"\n";
}
template <> void maxn(const char* name[], const size_t t)
{
    char temp[256];
    strncpy(temp, name[0], 256);
    for(size_t i=0; i<t; i++)    {
        if(strlen(temp)<strlen(name[i]))
            strncpy(temp, name[i], 256);
    }
    cout<<"Max word is "<<temp<<"\n";
}
Croessmah
Модератор
Эксперт CЭксперт С++
12878 / 7264 / 810
Регистрация: 27.09.2012
Сообщений: 17,950
Записей в блоге: 2
Завершенные тесты: 1
03.12.2012, 19:12     Поиск наибольшей строки #3
C++
1
2
3
4
5
6
7
8
9
10
template <> void maxn(char ** name,int t)
{
    char * temp=name[0];
    int i;
 
    for(i=1;i<t;i++)    {
        if(strcmp(name[i],temp)>0) temp=name[i];
    }
    cout<<"Max word is "<<temp<<"\n";
}
Yandex
Объявления
03.12.2012, 19:12     Поиск наибольшей строки
Ответ Создать тему
Опции темы

Текущее время: 13:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru