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

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

Войти
Регистрация
Восстановить пароль
 
Zheka91
4 / 4 / 1
Регистрация: 22.11.2010
Сообщений: 101
#1

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

03.10.2011, 17:18. Просмотров 380. Ответов 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++
Скажите пожалуйста ПОЧЕМУ равны данные &quot;адресса&quot; есть массив a а в нем a+2=*(a+2) Как это?

Даны вещественные n-мерные векторы x,y,z. Найти xy+yz+xz - C++
Люди спасайте....знаю что задача фигня но я запутался много где и уже неделю не знаю как все разгрести...Буду крайне благодарен за помощь ...

Если возможно, упорядочить булевы вектора, или вывести сообщение "Вектора несравнимы" - C++
помогите пожалуйста с задачей: Даны булева вектора a и b длины n. Если возможно, упорядочить их, или вывести сообщение &quot;Вектора...

Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые элементы этого вектора - C++
Дано вектор В, состоящий из N действительных чисел. Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые...

Вектора в C++ - C++
Приветствую. Никак не могу разобраться с векторами в C++. Можно коротко осветить как ими пользоваться.

2 вектора - C++
Всем доброго времени суток. Не могу сдать зачет по программированию из-за этой задачи. Даны 2 вектора. Найти сумму первых 10 эл-ов и из...

вектора - C++
дана последовательность целых чисел подсчитать количество элементов кратных 9

Размер вектора - C++
День добрый. У меня проблема. Нужно объявить вектор, заполнить его случайными числами в диапазоне от -50 до 50, вывести в listbox1....

Копирование вектора - C++
В поставленной задаче нужно реализовать функцию, которой передаем вектор, где последующее в функции будет создан вектор, в котором будут...

Вывод вектора - C++
#include &lt;iostream&gt; #include &quot;conio.h&quot; #include &lt;vector&gt; struct train { int in, out; }tr;


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
        }
Ответ Создать тему
Опции темы

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