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

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

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

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

03.10.2011, 17:18. Просмотров 386. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 17:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос N-мерные вектора (C++):

2х мерные массивы - C++
Скажите пожалуйста ПОЧЕМУ равны данные &quot;адресса&quot; есть массив a а в нем a+2=*(a+2) Как это?

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

2-мерные массивы: Вызов конструктора портит данные в других экземплярах - C++
Проблема: обнаружилось, что порой пропадают числа из существующих экземпляров класса. Числа (коллективно -- строками или колонками)...

Найти сколько элементов первого вектора совпадают с элементами второго вектора - C++
#include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;vector&gt; #include &lt;set&gt; using namespace std; void main() { ...

Дан список, элементы которого являются координатами вектора. Найти длину вектора - C++
1. Дан список, элементы которого являются координатами вектора в n-мерном пространстве. Найти длину вектора.

Определить количество положительных элементов вектора С(10) и заменить этим значением минимальный элемент вектора А(5) - C++
Ребята помогите пожалуйста с задачкой. Я сам не шарю в C++, но в этом семестре появился этот предмет! И завтра его надо будет сдать :( Буду...

1
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
03.10.2011, 17:35 #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;
        }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2011, 17:35
Привет! Вот еще темы с ответами:

Ошибка с итераторами для целочисленного вектора и вектора структуры - C++
Пытаюсь разобраться с векторами. Для динамической работы с памятью вещь, вроде, замечательная и удобная. Только необходимо использовать...

Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А - C++
Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А на начало, а...

STL. Функция, которая будет искать элементы большее среднего арифметического вектора и удалять их из вектора - C++
у меня есть вектор, помогите пожалуйста дописать функцию, которая будет искать элементы большее среднего арифметического вектора и удалять...

Составить главную программу и функцию. Для данного вектора А(М) найти количество неповторяющихся элементов вектора - C++
Здравствуйте. Буду очень благодарен,если кто нибудь напишет два кода к этим задачам. Спасибо за внимание. Задача 1. Составить...


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

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

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