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

Массив векторов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать класс Равносторонний треугольник http://www.cyberforum.ru/cpp-beginners/thread1043604.html
Здравствуйте. Помогите написать программу. Заранее спасибо. Создать класс Равносторонний треугольник, член класса – длина стороны. Предусмотреть в классе методы вычисления и вывода сведений о фигуре – периметр, площадь. Создать производный класс – правильная треугольная призма с высотой H, добавить в класс метод определения объема фигуры, перегрузить методы расчета площади и вывода сведений...
C++ Создать класс Time Здравствуйте. Помогите написать программу. Заранее спасибо. Создать класс Time для работы со временем в формате «час:минута:секунда». Класс должен включать в себя не менее четырех функций инициализации: числами, строкой (например, «23:59:59»), секундами и временем. Обязательными операциями являются: вычисление разницы между двумя моментами времени в секундах, сложение времени и заданного... http://www.cyberforum.ru/cpp-beginners/thread1043602.html
C++ Написать программу, работающую со структурами Автомобиль
Здравствуйте. Помогите написать программу. Заранее спасибо. Описать структуру с именем «Автомобиль», содержащую следующие поля: а) марка; б) год выпуска; в) цена; г) цвет. Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из N элементов типа Автомобиль; б) упорядочить все элементы по году выпуска автомобиля; в) вывести информацию об...
C++ Перегрузка операторов
Разработайте программу, в которой реализована перегрузка оператора «-». Оператор «-» должен определять разность элементов, лежащих на побочной диагонали двухмерного массива я так понимаю разность будет искаться как-то так loat array; int otherdiag = 0; for(int i = 0;i < a;i++){ otherdiag -= array; } а вот как сделать перегрузку оператора, и собрать это все добро в кучу
C++ Разработать программу для определения попадает ли точка в область изображенную на рисунке http://www.cyberforum.ru/cpp-beginners/thread1043575.html
Разработать программу для определения – попадает ли точка с координатами x, y, в область изображенную на рисунке. Исходные данные (x, y, R1, R2) должны быть считаны с экрана. Осуществлять проверку исходных данных (x1, y1, R1, x2, y2, R2) на соответствие варианту (обязательное касание окружностей). Помогите пожалуйста! У меня с нижней частью запара. Вот те ограничения, что я использую:...
C++ Открытие файлов разных расширений в одной программе Здравствуйте, есть вопрос. Как задать условие для открытия файла? есть программа, в которой при нажатии на обзор как и всегда предлагается выбрать файл, так вот, как сделать так, что бы например если этот файл имеет расширение .doc или .docx то происходит одно, а если .txt то другое, и если какое нибудь другое расширение то выпрыгивает ошибка и пугает людей. Спасибо) Добавлено через 50 минут... подробнее

Показать сообщение отдельно
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
16.12.2013, 16:49  [ТС]     Массив векторов
Цитата Сообщение от outoftime Посмотреть сообщение
Так делать нельзя.


Scale это масштаб

Длина это Length, иногда пишут size - размер, ибо короче.

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
#include <iostream>
#include <vector>
#include <pair>
#include <algorithm>
 
using namespace std;
 
class vector2d : public pair<double, double>
{
    vector2d() : pair<double, double>() { }
    vector2d(double x, double y) : pair<double, double>(x, y) { }
    
    vector2d operator + (vector2d value) { // сложение
        return vector2d(value.first + first, value.second + second);
    }
    
    vector2d operator - (vector2d value) { // вычитание
        return vector2d(first - value.first, second - value.second);
    }
    
    double operator * (vector2d value) { // скалярное умножение
        return first * value.first + second * value.second;
    }
    
    double length(vector2d value) { // расстояние между точками
        return sqrt(
            pow(first - value.first, 2) * 
            pow(second - value.second, 2)
        );
    }
    
    double length() { // расстояние до центра, т.е. длина вектора
        return sqrt(fist * fist, second * second);
    }
    
    bool operator < (vector2d value) {
        return ength() < value.length();
    }
};
 
int main()
{
   int n;
   cin >> n;    // считали количество точек
   vector<vector2d> v(n);       // создали масив точек
   for (int i = 0; i < n; ++i) {
       cin >> v[i].first >> v[i].second;    // считали 
   }
   sort(v.begin(), v.end());                // отсортировали
   for (int i = 0; i < n; ++i) {
       cout << v[i].first << v[i].second;    // вывели
   }
   
   return 0;
}
P.S. код не тестил, ошибки есть, думаю разберешься.
Спасибо, но я плохо программирую, часть функций просто не понимаю в этом коде.
Названия функций писал для себя.
можно что нибудь придумать для моего кода?
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
#include <iostream>
#include <cmath>
using namespace std;
class Vector 
{
public:
    struct VEC 
    {double X,Y;};
   VEC vec;
   VEC vecM[10];
   Vector(double x,double y){vec.X=x; vec.Y=y;} // конструктор
    
  /*void Sort (VEC vecM)
  {    struct VEC t;
       struct VEC end;
       int i;
       t=vecM[i];
        if(Dlina(vecM[i])< Dlina(vecM[i+1])
        vecM[i]=vecM[i+1];
        vecM[i+1]=t;
} */
  
   Vector Sum (Vector v) //сложение
   { 
        Vector t(*this);
        t.vec.X+=v.vec.X;
        t.vec.Y+=v.vec.Y;
        return t;
    }
    
   Vector Sub (Vector v) //вычитание
   { 
        Vector t(*this);
        t.vec.X-=v.vec.X;
        t.vec.Y-=v.vec.Y;
        return t;
    } 
       
  double Scale (Vector v) //скалярное умножение
   {
           return vec.X*v.vec.X+vec.Y*v.vec.Y;
   }
   
  double ScaleA (Vector v, int k) //умножение вектора на число
   {
        return (vec.X*=k),(vec.Y*=k);
   } 
 
  
   
    double Dlina (Vector v) //длина вектора
   {
           return sqrt(pow(v.vec.X,2) + pow(v.vec.Y,2));
   }      
   
 };
int main()
{double x,kx,y,ky;
    int n,a;
    system("chcp 1251");
    cout<<"Введите x="; 
    cin>>x; //Вводим значение х для вектора
    cout<<"Введите y="; 
    cin>>y; //Вводим значение у для вектора
    Vector Vec_a(x,y); //определение структурной переменной Vec_a c Vec_a.X=x Vec_a.Y=y
    cout << "Vec a  = (" << Vec_a.vec.X<<";"<<Vec_a.vec.Y<<")" ;//вывод вектора 
    cout<<endl;
    cout<<"Введите x="; cin>>x; kx=x; //Вводим значение х для вектора
    cout<<"Введите y="; cin>>y; ky=y;//Вводим значение у для вектора
    Vector Vec_b(x,y); //определение структурной переменной Vec_b c Vec_b.X=x Vec_b.Y=y
    cout << "Vec b  = (" << Vec_b.vec.X<<";"<<Vec_b.vec.Y<<")"; //вывод вектора a в виде Vec a = 4 
    
 
    Vec_b=Vec_a.Sum(Vec_b); // сложение
    cout<<endl;
    cout << "Сумма векторов = (" << Vec_b.vec.X<<";"<<Vec_b.vec.Y<<")" ;//вывод вектора a в виде Vec a = 4 
    
    
    Vec_b.vec.X=kx; Vec_b.vec.Y=ky;
    Vec_b=Vec_a.Sub(Vec_b); // вычитание
    cout<<endl;
    cout << "Разность векторов = (" << Vec_b.vec.X<<";"<<Vec_b.vec.Y<<")" ;//вывод вектора a в виде Vec a = 4 
    cout<<endl;
    
    Vec_b.vec.X=kx; Vec_b.vec.Y=ky;
    x=Vec_a.Scale(Vec_b); // скалярное умножение векторов
    cout<<"Скалярное произведение = "<<x<<endl;
    
    x=Vec_a.Dlina(Vec_a); // Длина вектора
    cout<<"Длинна вектора (a) ="<<x<<endl;
  
    cout<<"Введите число для умножения = "; cin>>a;
    Vec_a.ScaleA(Vec_a, a); //произведение вектора а и числа
    cout << "Умножение на число (a) = (" << Vec_a.vec.X<<";"<<Vec_a.vec.Y<<")" ;
    cout<<endl;
    
    cout<<"Задача №1: Дан массив A - массив векторов. Отсортировать его в порядке убывания длин векторов. \n";
    cout<<"Введите количество элементов = "; cin>>n;
    for (int i=0; i<n; i++) //Заполнение массива
        {cout<<"Введите x="; cin>>Vec_a.vecM[i].X;
         cout<<"Введите y="; cin>>Vec_a.vecM[i].Y;
         } 
    cout<<endl;
    cout<<"Исходный массив: ";
    for (int i=0; i<n; i++) //Вывод массива
        {cout << "(" << Vec_a.vecM[i].X<<";"<<Vec_a.vecM[i].Y<<")  " ;}
    cout<<endl;    
    
    
 /*   //сортировка пузырьком
    bool need=true;
    while(need) {need=false}
    for (int i=0; i<n-1; i++)
    {if (Vec_a.VecM[i].Dlina>Vec_a.VecM[i+1].Dlina)
    {Vector k=Vec_a.VecM[i];
    Vec_a.VecM[i+1]=k; need=true;}
*/
    
         
    system("PAUSE");
    return 0;
}
я не знаю как обратиться к длине
 
Текущее время: 17:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru