Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > не получается шаблон класса


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

#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();

}

Автор: cristaloleg 26.1.2010, 19:04
у вас кол-во элементов хранится в типе double/float, а индекс должен быть целочисленным

Автор: Yuran89 26.1.2010, 19:15
это я уже исправил на
    Tip *A;
    int n;
но все равно та же проблема. Программа не работает с вещественными числами.Как только встречается таковой, сразу выбрасывает на результат....

Автор: andrew_121 26.1.2010, 19:27
судя по этому:
Цитата(Yuran89 @  26.1.2010,  18:58 Найти цитируемый пост)
#include <iostream.h>

и потому что пространство std по умолчанию открыто, у вас древнющий компилятор. у меня все скомпилилось. gcc-4.4.2

Автор: Yuran89 26.1.2010, 19:46
Компиляцию программа прошла и у меня. Да в общем и работает она правильно. Только вот когда тестировал ее я делал глупую ошибку: дробные числа вводил через запятую а не через точку)  .
cristaloleg , andrew_121 спасибо за интерес к моей проблеме).

Автор: andrew_121 26.1.2010, 19:51
Yuran89, тему отметь решенной.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)