Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual C++
Войти
Регистрация
Восстановить пароль
 
YURAN89
1 / 1 / 1
Регистрация: 04.12.2008
Сообщений: 19
#1

не получается шаблон класса - Visual C++

26.01.2010, 19:18. Просмотров 414. Ответов 1
Метки нет (Все метки)

Всем доброго времени суток. У меня такая проблема:
Написал шаблон класса, но он не работает для типов double и float. Задача заключается в том чтобы написать шаблон класса massiv в котором хранится одномерный массив, есть конструктор, функция сортировки и показа отсортированного массива.
Все работает, но только для целых чисел, а для остальных типов не работает...
Вот код:

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
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
 
template < class Tip >
class Massiv
{
    Tip *A,n;
public:
     Massiv ()
{
    cout<<"Vvedite col-vo elementov"<<endl;
    cin>>n;
    A=new Tip[n];
    cout<<"Vvodite elementi"<<endl;
    for(int i=0; i<n;i++)
        cin>>A[i];
}
 
void Show()
{
    for(int i=0;i<n;i++)
        cout<<A[i]<<"  ";
        cout<<endl;
}
void Sort()
{
    int i;
    int j;
    Tip tmp;
 
    for(i = 0; i <= n-1; i++)
    {
        for(j = 0; j <= n-2-i; j++)
        {
            if( A[j]>A[j+1] )
            {
                tmp = A[j];
                A[j] = A[j+1];
                A[j+1] = tmp;
            }
        }
    }
        for(i=0;i<n;i++)
        cout<<A[i]<<"  ";
        cout<<endl;
}
};
 
void main()
{
    cout<<"Celie: "<<endl;
Massiv< int > I;
cout<<endl;
cout<<"Vechcestvennie: "<<endl;
Massiv< float > D;
cout<<endl;
cout<<"Dlia int: "<<endl;
I.Sort();
cout<<"Dlia double"<<endl;
D.Sort();
 
}
Добавлено через 24 минуты
я исправил
Tip *A,n;
на
Tip *A;
int n;
но все равно та же проблема. Программа не работает с вещественными числами.Как только встречается таковой, сразу выбрасывает на результат....
http://www.cyberforum.ru/visual-cpp/thread817232.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2010, 19:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос не получается шаблон класса (Visual C++):

шаблон класса
Добрый день! Подскажите пожалуйста, можно ли делать так: template &lt;class T&gt;...

Насколько сложно определить шаблон функции-друга для шаблона класса
У меня есть класс типа : class array { ... friend std::ostream&amp;...

Шаблон родительского класса и шаблон класса потомка
Запутался, как правильно пронаследоваться от шаблона класса? #include...

Шаблоны функций, Ошибка: для использования класса шаблон требуется список аргументов шаблон
Есть у меня 3 структуры Трамвай , Троллейбус , Автобус. Для автобуса определены...

Шаблон класса, параметром которого должны являться наследники определённого класса
Сразу извиняюсь за нубский вопрос. Суть в том, что я хочу сделать шаблон...

1
Monte-Cristo
2794 / 1380 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
26.01.2010, 20:05 #2
У меня работает прекрасно
Чуть-чуть отформатировал код для удобочитаемости и заменил заголовочные файлы, необходимые в стандарте C++03

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
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
 
template < class Tip >
class Massiv
{
    Tip *A,n;
public:
     Massiv ()
{
    cout<<"Vvedite col-vo elementov"<<endl;
    cin>>n;
    A=new Tip[n];
    cout<<"Vvodite elementi"<<endl;
    for(int i=0; i<n;i++)
        cin>>A[i];
}
 
void Show()
{
    for(int i=0;i<n;i++)
        cout<<A[i]<<"  ";
        cout<<endl;
}
void Sort()
{
    int i;
    int j;
    Tip tmp;
 
    for(i = 0; i <= n-1; i++)
    {
        for(j = 0; j <= n-2-i; j++)
        {
            if( A[j]>A[j+1] )
            {
                tmp = A[j];
                A[j] = A[j+1];
                A[j+1] = tmp;
            }
        }
    }
        for(i=0;i<n;i++)
        cout<<A[i]<<"  ";
        cout<<endl;
}
};
 
void main()
{
    cout<<"Celie: "<<endl;
Massiv< int > I;
cout<<endl;
cout<<"Vechcestvennie: "<<endl;
Massiv< float > D;
cout<<endl;
cout<<"Dlia int: "<<endl;
I.Sort();
cout<<"Dlia double"<<endl;
D.Sort();
 
}
Это работает.

p.s: а как ты вещественные числа вводишь?

Через запятую, или через точку?

p.p.s: для класса нужен еще деструктор, для очищения выделенной памяти в конструкторе:

C++
1
2
3
4
~Massiv()
{
    delete[] A;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2010, 20:05
Привет! Вот еще темы с решениями:

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

Не получается получить тип класса из параметризованного класса
Добрый день, дело в том, что я не очень знаком с параметризацией типов в java,...

Шаблон класса (параметризация класса)
Нужна помощь и советы!!! Англо-русский словарь построен как список. Каждая...

Не получается шаблон
//==============================================================================...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru