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

N-мерные вектора - C++

Восстановить пароль Регистрация
 
Zheka91
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
03.10.2011, 17:18     N-мерные вектора #1
неработает вывод и оператор = . помогите пожалуйста
main.cpp
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
#include "vector.h"
int main()
{
    int mas1[]={3,4,5,8,7,3,5}; vector<int>A(mas1,sizeof(mas1)/sizeof(mas1[0]));
    int mas2[]={4,1,8,2,8,9,5}; vector<int>B(mas2,sizeof(mas2)/sizeof(mas2[0]));
    vector<int>C;
    printf("A=");   A.output();     printf("\n");
    printf("--------------------------------\n");
    printf("B=");   B.output();     printf("\n");
    printf("--------------------------------\n");
    C=A+B;
    printf("A+B="); C.output();     printf("\n");
    printf("--------------------------------\n");
    C=A-B;
    printf("A-B="); C.output();     printf("\n");
    printf("--------------------------------\n");
    C=A*B;
    printf("A*B="); C.output();     printf("\n");
    printf("--------------------------------\n");
    C=A*5;
    printf("A*5="); C.output();     printf("\n");
    printf("--------------------------------\n");
    printf("|A|=%lf\n",A.modul());
    printf("--------------------------------\n");
    printf("|B|=%lf\n",B.modul());
    printf("--------------------------------\n");
    printf("|A|>|B|");  if(A>B)printf("true\n");    else printf("false\n");
    printf("--------------------------------\n");
    printf("|A|<|B|");  if(A<B)printf("true\n");    else printf("false\n");
    printf("--------------------------------\n");
    printf("|A|==|B|"); if(A==B)printf("true\n");   else printf("false\n");
    printf("--------------------------------\n");
    printf("|A|!=|B|"); if(A!=B)printf("true\n");   else printf("false\n");
    printf("--------------------------------\n");
    system("pause");
    return 0;
}
vector.h
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#pragma once
#include "iostream"
#include "stdio.h"
#include "math.h"
template<class T>
class vector
{
    int size;
    T *x;
public:
    vector():x(0),size(0){}
    vector(T *y, int s)
    {
        size=s;
        x=new T [size];
        for(int i=0;i<size;i++)
            x[i]=y[i];
    }
    void output();
    vector operator+(const vector &t);
    vector operator-(const vector &t);
    vector operator*(const vector &t);
    vector operator*(const int &t);
    double modul();
    vector&operator=(const vector &t)
    {
        size=t.size;
        for(int i=0; i<size; i++)
            x[i]=t.x[i];
        return *this;
    }
    bool operator>(vector &t);
    bool operator<(vector &t);
    bool operator==(vector &t);
    bool operator!=(vector &t);
};
 
template<class T>void vector<T>::output()
{
    for(int i=0; i<size; i++)
    {
        if (i==0)
            cout<<"("<<x[i];
        else if (i==size-1)
            cout<<x[i]<<")";
        else 
            cout<<x[i]<<",";
    }
}
template<class T>vector<T> vector<T>::operator+(const vector &t) 
{
    vector <T>temp;
    temp.x=new int[temp.size=size];
    for(int i=0; i<size; i++)
    {
        temp.x[i]=x[i]+t.x[i];
    }
    return temp;
}
template<class T>vector<T> vector<T>::operator-(const vector &t)
{
    vector <T>temp;
    temp.x=new int[temp.size=size];
    for(int i=0; i<size; i++)
    {
        temp.x[i]=x[i]-t.x[i];
    }
    return temp;
}
template<class T>vector<T> vector<T>::operator*(const vector &t)
{
    vector <T>temp;
    temp.x=new int[temp.size=size];
    for(int i=0; i<size; i++)
    {
        temp.x[i]=x[i]*t.x[i];
    }
    return temp;
}
template<class T>vector<T> vector<T>::operator*(const int &t)
{
    vector <T>temp;
    temp.x=new int[temp.size=size];
    for(int i=0; i<size; i++)
    {
        temp.x[i]=x[i]*t;
    }
    return temp;
}
template<class T>double vector<T>::modul()
{
    int temp=0;
    for(int i=0; i<size; i++)
    {
        temp+=x[i]*x[i];
    }
    return(sqrtl(temp));
}
template<class T>bool vector<T>::operator>(vector &t)
{
    if(this->modul()>t.modul())
        return true;
    else return false;
}
template<class T>bool vector<T>::operator<(vector &t)
{
    if(this->modul()<t.modul())
        return true;
    else return false;
}
template<class T>bool vector<T>::operator ==(vector &t)
{
    if (this->modul()== t.modul())
        return true;
    else return false;
}
template<class T>bool vector<T>::operator!=(vector &t)
{
    if (this->modul()!= t.modul())
        return true;
    else return false;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 17:18     N-мерные вектора
Посмотрите здесь:

2х мерные массивы C++
Дан список, элементы которого являются координатами вектора. Найти длину вектора C++
Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А C++
Определить количество положительных элементов вектора С(10) и заменить этим значением минимальный элемент вектора А(5) C++
STL. Функция, которая будет искать элементы большее среднего арифметического вектора и удалять их из вектора C++
Составить главную программу и функцию. Для данного вектора А(М) найти количество неповторяющихся элементов вектора C++
2-мерные массивы: Вызов конструктора портит данные в других экземплярах C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
03.10.2011, 17:35     N-мерные вектора #2
А выделение памяти где ?
C++
1
2
3
4
5
6
7
8
9
        vector&operator=(const vector &t)
        {
                size=t.size;
                if( x){ delete[] x; x = NULL; }  // если уже есть массив, то предыдущий удаляем
                if( size) x =new T [size];    // выделяем новый массив размера size
                for(int i=0; i<size; i++)
                        x[i]=t.x[i];
                return *this;
        }
Yandex
Объявления
03.10.2011, 17:35     N-мерные вектора
Ответ Создать тему
Опции темы

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