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

Векторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача функции заранее неизвестного объекта http://www.cyberforum.ru/cpp-beginners/thread1040495.html
Здравствуйте. Можно ли не используя шаблонов передать функции объект заранее неизвестного класса и применить к нему функцию-член? #include <iostream> #include "Cat.h" #include "Dog.h" using namespace std; void makeItVoice( /* указатель на экземпляр заранее неизвестного класса */) { /* указатель на экземпляр заранее неизвестного класса */.voice();
C++ Вставка нового столбца в двумерном массиве Вставить новый столбец после столбца, в котором нет ни одного отрицательного элемента. http://www.cyberforum.ru/cpp-beginners/thread1040488.html
Умножение целочисленных прямоугольных матриц C++
#include <iostream> #include <stdlib.h> #include <time.h> #include <cmath> #include <math.h> using namespace std; void tselyi1(int **mas, int const n,int const m); void tselyi2(int **mas, int const n,int const m);
C++ подскажите новичку добрые друзья(
всем ПРИВЕТ =) ребята хотел у вас спросить, с чего надо начинать, что бы понимать программировании, проста с задачам который мне надо было решать )здесь помогли, но хочу понять ) как надо правильно научиться вообщем хочу чтоб смог я сам решать или создать какой нибудь Составить главную программу и функциюи именно с чего надо начинать ???? я почти нечего не понимаю в программировании (((( вот и...
C++ Linux Реализация функции wait http://www.cyberforum.ru/cpp-beginners/thread1040471.html
Где можно найти реализацию ф-ии wait в исходных текстах ядра? У меня стоит задание найти реализацию функции wait, которая ожидает завершение дочернего процесса и объяснить как она релизована, но я слышал что её реализации может и не оказаться, тогда будет необходимо пояснить почему её нет. Простым поиском по ядру удалось найти файлы wait.c и несколько с таким же именем, но нигде нет реализации...
C++ Двумерный массив прошу растолковать, впереди сессия, очень нужно!! подробнее

Показать сообщение отдельно
zss
Модератор
Эксперт С++
 Аватар для zss
6056 / 5659 / 1829
Регистрация: 18.12.2011
Сообщений: 14,454
Завершенные тесты: 1
17.12.2013, 12:50     Векторы
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
#include <iostream>
#include <cmath>
using namespace std;
struct VEC 
{
   double X,Y;
};
 
class Vector 
{
private:
    VEC vec;
public:
   Vector(double x=0,double y=0){vec.X=x; vec.Y=y;}
   void Set(double x,double y){vec.X=x; vec.Y=y;} 
   
   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;
   }
   
  void ScaleA (int k) //умножение вектора на число
   {
        vec.X*=k;
        vec.Y*=k;
   } 
    double Dlina () //длина вектора
   {
           return sqrt(vec.X*vec.X+vec.Y*vec.Y);
   }    
    void Print()
    {
        cout << "(" << vec.X<<";"<<vec.Y<<")  ";
    }
 
   friend void Sort(Vector *Vec, int n); // не является членом класса Vector сортирует массив векторов Vec[].
 
 };
void Sort(Vector *Vec, int n)
{
    Vector tmp;
    for(int i = 0; i < n - 1; ++i) // i - номер прохода
    {            
        for(int j = i; j < n - 1; ++j) // внутренний цикл прохода
        {     
            if( Vec[j+1].Dlina() < Vec[j].Dlina()) 
            {
                tmp.vec = Vec[j+1].vec; 
                Vec[j+1].vec = Vec[j].vec; 
                Vec[j].vec = tmp.vec;
            }
        }
    }
}
int main()
{
    double x,kx,y,ky;
    int n,a;
    setlocale(LC_ALL,"Rus");
    cout<<"Введите x="; 
    cin>>x; //Вводим значение х для вектора
    cout<<"Введите y="; 
    cin>>y; //Вводим значение у для вектора
    Vector Vec_a(x,y); //определение структурной переменной Vec_a c Vec_a.X=x Vec_a.Y=y
    Vec_a.Print();
    //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.Print();
    //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.Print();
    //(" << Vec_b.vec.X<<";"<<Vec_b.vec.Y<<")" ;//вывод вектора a в виде Vec a = 4 
    Vec_b=Vec_a.Sub(Vec_b); // вычитание
    cout<<endl;
    cout << "Разность векторов = ";
    Vec_b.Print();
    //(" << Vec_b.vec.X<<";"<<Vec_b.vec.Y<<")" ;//вывод вектора a в виде Vec a = 4 
    cout<<endl;
    Vec_b.Set(kx,ky);
    x=Vec_a.Scale(Vec_b); // скалярное умножение векторов
    cout<<"Скалярное произведение = "<<x<<endl;
    x=Vec_a.Dlina(); // Длина вектора
    cout<<"Длинна вектора (a) ="<<x<<endl;
    cout<<"Введите число для умножения = "; cin>>a;
    Vec_a.ScaleA(a); //произведение вектора а и числа
    cout << "Умножение на число (a) = ";
    Vec_a.Print();
    //(" << Vec_a.vec.X<<";"<<Vec_a.vec.Y<<")" ;
    cout<<endl;
    
    cout<<"Задача №1: Дан массив A - массив векторов. Отсортировать его в порядке убывания длин векторов. \n";
    cout<<"Введите количество элементов = "; cin>>n;
    Vector* vecM=new Vector[n];
    for (int i=0; i<n; i++) //Заполнение массива
    {
        double x,y;
        cout<<"Введите x="; cin>>x;
         cout<<"Введите y="; cin>>y;
         vecM[i].Set(x,y);
    } 
    cout<<endl;
    cout<<"Исходный массив: ";
    for (int i=0; i<n; i++) //Вывод массива
        vecM[i].Print();
    //{cout << "(" << vecM[i].vec.X<<";"<<Vec_a.vecM[i].Y<<")  " ;}
    cout<<endl;    
    
   Sort(vecM,n);
   cout<<"Отсортированный массив: ";
    for (int i=0; i<n; i++) //Вывод массива
        vecM[i].Print();
    //    {cout << "(" << Vec_a.vecM[i].X<<";"<<Vec_a.vecM[i].Y<<")  " ;}
    cout<<endl;       
    delete[] vecM;
         
    system("PAUSE");
    return 0;
}
Теперь понятно?
1. Сортировать надо массив переменных типа Vector, а не какой-то мистический VEC.
2. Методы типа Dlina используют объект, который вызвал этот метод.
3. Данные класса должны быть защищены (private).
 
Текущее время: 03:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru