Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
1

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

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

Author24 — интернет-сервис помощи студентам
Передо мной стоит задание: использовать шаблонную функцию для нахождения самого большого значения для массивов 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";
}
Сам код работает, однако моя явная специализация чет "барахлит". Дело в том, что она находит самую первую строку, забивает ее во временную переменную, и все - цикл завершен! Никак не могу понять, в чем именно моя ошибка. Подскажите плиз!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2012, 18:17
Ответы с готовыми решениями:

Нужно найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!"
Вводится массив строк символов. Необходимо найти строку наибольшей длины и увеличить остальные...

В матрице размерностью MxN найти номер строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы
Данная матрица размерности M x N. Найти номер ее строки с наибольшей суммой элементов и вывести...

Необходимо найти строку наибольшей длины и увеличить остальные строк в массиве к длине наибольшей строки, используя символ "!"
Вводится массив строк символов. Необходимо найти строку наибольшей длины и увеличить остальные...

Поиск наибольшей цифры
:) Привед всем!!! Такая смешная задачка на C++ Borland как - ввести с клавиатуры число и найти в...

2
1458 / 795 / 257
Регистрация: 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";
}
1
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 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";
}
1
03.12.2012, 19:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2012, 19:12
Помогаю со студенческими работами здесь

Поиск ромба с наибольшей площадью
Дано множество точек на плоскости в виде: x: 0 5 3 3 ... y: 1 1 0 2 ... Нужно найти среди них...

Поиск наибольшей последовательности цифр в файле
Во входном файле in.txt содержится последовательность цифр от 0 до 9, например: 1 4 4 4 3 3 2 2...

Поиск в массиве последовательности с наибольшей суммой
Помогите пожалуйста разобраться с задачей, делали по блок-схеме преподователя, и судя по всему эта...

Поиск наибольшей суммы подряд следующих элементов массива
Здравствуйте, уважаемые форумчане. Помогите, пожалуйста, решить задачу: &quot;дан одномерный массив...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru