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

преобразование типов (класс вектор) C++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шаблон функции http://www.cyberforum.ru/cpp-beginners/thread411195.html
Всем привет. Помогите пожалуйста решить вот такую задачку. Написать шаблон функции для поиска среднего арифметического значений массива. И если можно дайте пожалуйста ссылку, где можно почитать про эти шаблоны, а то я чет вообще ничего ни могу понять.
C++ Структура и файлы. Расписание автобусных рейсов. В справочной автовокзала хранится расписание рейсов автобусов. Для каждого рейса указаны: номер рейса, тип автобуса, пункт назначения, время отправления, время прибытия в конечный пункт. Для описания рейса в программе необходимо использовать тип данных структура. Для хранения расписания рейсов автобусов создать бинарный файл, ориентированный на тип данных структура. Предусмотреть в программе... http://www.cyberforum.ru/cpp-beginners/thread411182.html
C++ СЛАУ методы Гауса Жордано-Гауса
Доброго времени суток. Необходимо решить СЛАУ в 2х вариантах методом Гаусса и методом Жордана-Гауса. Я собственно решил, однако ответы, при одинаковых входных данных различаются, не могу понять где ошибка. Вот решение СЛАУ методом Гаусса #include <cstdlib> #include <iostream> #include <math.h>
C++ перевод систем счисления
1. Задание: Напишите программу перевода чисел из 2 системы в 10. 2.Задание: Напишите программу выполнения арифметических операций в разных системах счисления. Числа по основанию 8 и 4. Выполнить операцию умножения.
C++ Найти слово максимальной длины в одной строке и поменять со словом максимальной длины другой строки http://www.cyberforum.ru/cpp-beginners/thread411170.html
Найти слово максимальной длины в одной строке и поменять со словом максимальной длины другой строки..Помогите реализовать с помощью типа string....
C++ Таблица!!! #include<iostream.h> #include<fstream.h> void cherta (ofstream).g void pustaya (ofstream.g void probel (ofstream.g void main() {ifstream f1("zagol.txt"); ifstream f2("stolb.txt"); ifstream f3("stroka.txt"); ifstream f4("dat.txt"); подробнее

Показать сообщение отдельно
mego4el
0 / 0 / 0
Регистрация: 19.12.2011
Сообщений: 15
19.12.2011, 01:31     преобразование типов (класс вектор) C++
Доброй ночи ув. форумчане. Пожалуйста помогите сделать преобразования типов, пытался что-то навоять, прочитал немало материала по этой теме, но ничего толком не получается (это видно в моих попытках преобразовать, в коде), преобразования нужны следующие:

- Vector в Char (представить вектор ввиде символов x,y,z)
- Vector в String (представить вектор ввиде символов x,y,z)
- Vector в float
- Vector в double

так же из этих типов обратно что бы можно было преобразовать допустим из char в Vector, String в Vector, float в Vector ... etc..

т.е. преобразования в обе стороны, из и в.

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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
const int col=system("color 17");
 
class Vector
{
    double coords[3]; //координаты вектора
    char cX[1], cY[1], cZ[1];
 
public:
    //перегрузка оператора квадратных скобок, для индексации обьектов
    double &operator[](int i)
    {
        int k=i%3;
        return coords[k];
    }
    //перегрузка скобок, для присваивания координатам значений
    Vector operator() (double x, double y, double z)
    {
        coords[0]=x;
        coords[1]=y;
        coords[2]=z;
        return *this;
    }
    //перегрузка скобок, для вычисления вект. произведения
    Vector operator () (Vector a, Vector b)
    {
        for (int i=0;i<3;i++)
            coords[i]=a[i+1]*b[i+2]-a[i+2]*b[i+1];
        return *this;
    }
    //перегрузка звездочки, для вычисления скалярного произведения
    double operator* (Vector obj)
    {
        double res=0;
        for (int i=0;i<3;i++)
            res+=coords[i]*obj[i];
        return res;
    }
 
    Vector(double x, double y, double z)
    {
        coords[0]=x;
        coords[1]=y;
        coords[2]=z;
    }
    //в массив
    operator double*()
    { 
        return coords;
    }    
 
    // вычитание векторов
    Vector operator - (Vector &rhs)
    {
        return Vector(coords[0]-rhs.coords[0], coords[1]-rhs.coords[1], coords[2]-rhs.coords[2]);
    }
 
    //метод для отображения координат
    void show()
    {
        cout<<"("<<coords[0]<<", "<<coords[1]<<","<<coords[2]<<")\n";
    }
    
    Vector()
    {
        for (int i=0;i<3;i++)
            coords[i]=0;
    }
 
    Vector (Vector &vect){coords[0]=vect.cX[1]; coords[1]=vect.cY[1]; coords[2]=vect.cZ[1];}
    
    /*operator char*()
    {
        double i=5;
        char d1=char(i); //явное double к char
        char d2=i; //неявное
        Vector vect(5,2,1); 
        char d3=char(vect); //явное Vector в char
        char d4=vect; //неявное
        return coords;
    }
 
    operator string()
    {
        stringstream result; 
        result<<'(';
        for (int i=0; i < 3; ++i) 
        {
            if (i>0) result << ',';
            result<<coords[i];
        }
        result<<')';
        return result.str();
    }*/
 
        Vector operator - ()
    {
        return Vector( -coords[0], -coords[1], -coords[2] ); //отриц направление
    };
 
    Vector operator++ (int)
    {
        double x;
        double y;
        double z;
        x=+1;
        y=+2;
        z=+3;
        return *this;
    }
};
 
int main()
{
    Vector a,b,c,m1,m2,st,v;
    //вычитание
    m1(3,3,3);
    m2(1,2,1);
    cout<<"m1 = "; m1.show();
    cout<<"m2 = "; m2.show();
    m1=m1-m2;
    cout<<"m1-m2 = "; m1.show();
    //в указатель на double, указывающий на начало мсассива
    cout<<"mas = ";
    for (double *p = st; p != st+3; ++p)
    {
        cout<<*p<<" ";
        st(1,2,3);
    }
    cout<<endl;
    //в строку
    //v(1,2,3);
    //string str = v;
    //cout<<"vector to string = "<<"(x,y,z)"<<endl;
    //----
    a(1,-3,4);
    b(2,1,3);
    cout<<"a = "; a.show();
    cout<<"b = "; b.show();
    cout<<"a*b="<<a*b<<endl; //скалярное произвед
    c(a,b); //векторное произвед
    cout<<"[ab]=";
    c.show();
    return 0;
}
очень благодарен всем кто хоть как нибудь поможет.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru