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

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

Войти
Регистрация
Восстановить пароль
 
 
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
#1

Векторы - C++

13.12.2013, 22:06. Просмотров 996. Ответов 25
Метки нет (Все метки)

Добрый день, помогите пожалуйста решить задачку, в моей программе могут быть ошибки, т.к. в материале я полный 0.
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
/*IV. ГђГҐГ*ëèçîâГ*ГІГј Гў âèäå ÊËÀÑÑÀ Г*Г*áîð ïîäïðîãðГ*ìì äëÿ âûïîëГ*ГҐГ*ГЁГї 
ñëåäóþùèõ îïåðГ*öèé Г*Г*Г¤ âåêòîðГ*ìè:
1) ñëîæåГ*ГЁГҐ;
2) âû÷èòГ*Г*ГЁГҐ;
3) Г±ГЄГ*ëÿðГ*îå ГіГ¬Г*îæåГ*ГЁГҐ âåêòîðîâ;
4) ГіГ¬Г*îæåГ*ГЁГҐ âåêòîðГ* Г*Г* ÷èñëî;
5) äëèГ*Г* âåêòîðГ*.
Âåêòîð ïðåäñòГ*ГўГЁГІГј ñëåäóþùèì òèïîì:
struct Vector {double X, Y;};
Èñïîëüçóÿ ýòîò ГЄГ«Г*Г±Г±, ðåøèòü Г§Г*Г¤Г*Г·ГЁ:
1. Г„Г*Г* Г¬Г*Г±Г±ГЁГў A - Г¬Г*Г±Г±ГЁГў âåêòîðîâ. ÎòñîðòèðîâГ*ГІГј ГҐГЈГ® Гў ïîðÿäêå óáûâГ*Г*ГЁГї äëèГ* âåêòîðîâ.
2. Г‘ ïîìîùüþ Г¤Г*ГІГ·ГЁГЄГ* ñëó÷Г*Г©Г*ûõ Г·ГЁГ±ГҐГ« Г±ГЈГҐГ*åðèðîâГ*ГІГј 2N öåëûõ Г·ГЁГ±ГҐГ«. N ГЇГ*Г° 
ГЅГІГЁГµ Г·ГЁГ±ГҐГ« Г§Г*Г¤Г*ГѕГІ N òî÷åê êîîðäèГ*Г*ГІГ*îé ïëîñêîñòè. Âûâåñòè Г*îìåðГ* òðîéêè òî÷åê,
 ГЄГ®ГІГ®Г°Г»ГҐ ÿâëÿþòñÿ êîîðäèГ*Г*ГІГ*ìè âåðøèГ* òðåóãîëüГ*ГЁГЄГ* Г± Г*Г*èáîëüøèì óãëîì.
*/
#include <iostream>
#include <cmath>
using namespace std;
class Vectors 
{
      public:
   struct Vec {double x, y;};
   void Sum () //ñëîæåГ*ГЁГҐ
  { struct Sum {double x, y;};
   Sum.x=Vec_a.x + Vec_b.x;
   Sum.y=Vec_b.y + Vec_b.y;}
  // cout<<"ÑóììГ* = "<< Sum; //ïðîâåðêГ*
  
   void Sub () //âû÷èòГ*Г*ГЁГҐ
  { struct Sub {double x, y;};
   Sub.x=Vec_a.x - Vec_b.x;
   Sub.y=Vec_b.y - Vec_b.y;}
   
   void Scale () //Г±ГЄГ*ëÿðГ*îå ГіГ¬Г*îæåГ*ГЁГҐ
   {struct Scale {double x, y;};
   Scale.x=Vec_a.x * Vec_b.x;
   Scale.y=Vec_b.y * Vec_b.y;}
   
   void Umnoj () //ГіГ¬Г*îæåГ*ГЁГҐ âåêòîðГ* Г*Г* ÷èñëî t
   {struct Umnoj {double x, y;};
   Umnoj.x=Vec_a.x * t;
   Umnoj.x=Vec_a.y * t;}
   
   void Dlina () //Г*Г*õîæäГ*ГЁГҐ äëèГ*Г*Г»
   {double Dlina;
   Dlina=sqrt(pow(Vec_a.x,2)+ pow(Vec_a.y,2))}; //ГЇГ® ôîðìóëå = êîðåГ*Гј(Г*^2+b^2)
  
  
  /*Г‡Г*Г¤Г*Г·Г* 1 - ÑîðòèðîâêГ* ГЇГ® óáûâГ*Г*ГЁГѕ äëèГ*
  void Sort()
  for (int i=1; i<n; i++)
  {????????????????????????????
  */
  
  /*Г‡Г*Г¤Г*Г·Г* 2 - 
  */
}
int main()
{int n; 
    system("chcp 1251");
    cout<<"Ââåäèòå êîëè÷åñòâî ýëåìåГ*òîâ Г¬Г*Г±Г±ГЁГўГ*";
    cin>>n;
    struct Vector Vec; //îïðåäåëåГ*ГЁГҐ ñòðóêòóðГ*îé ïåðåìåГ*Г*îé
   // struct vector a = { 3, 5 }; //ïðèìåð âåêòîðГ* Г* (3,5)
    cout<<"Ââåäèòå êîîðäèГ*Г*ГІГі x="; cin>>Vec_a.x; //Ââîäèì Г§Г*Г*Г·ГҐГ*ГЁГҐ Гµ äëÿ âåêòîðГ* Г*
    cout<<endl;
    cout<<"Ââåäèòå êîîðäèГ*Г*ГІГі y="; cin>>Vec_a.y; //Ââîäèì Г§Г*Г*Г·ГҐГ*ГЁГҐ Гі äëÿ âåêòîðГ* Г*
    cout << "Vec a  = " << Vec_a.x<<" "<<Vec_a.y //âûâîä âåêòîðГ* a Гў âèäå Vec a = 4 ; 2
    Cout<<endl;
    struct vector b = { 2, 3 };
    cout<<"Ââåäèòå êîîðäèГ*Г*ГІГі x="; cin>>Vec_b.x; //Ââîäèì Г§Г*Г*Г·ГҐГ*ГЁГҐ Гµ äëÿ âåêòîðГ* b
    cout<<endl;
    cout<<"Ââåäèòå êîîðäèГ*Г*ГІГі y="; cin>>Vec_b.y; //Ââîäèì Г§Г*Г*Г·ГҐГ*ГЁГҐ y äëÿ âåêòîðГ* b
    cout << "Vec b  = " << Vec_b.x<<" ; "<<Vec_b.y << endl; //âûâîä âåêòîðГ* b Гў âèäå Vec b = -2 ; 5
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 22:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Векторы (C++):

Векторы - C++
Здравствуйте. Использую векторы типа vector&lt;string&gt; sentence;. Описываю их в классе в private объявляю vector&lt;string&gt; sentence;/ В public...

Векторы - C++
Доброго времени суток! Очень нужна помощь в двух задачах. Заранее спасибо! 1. Дан целочисленный вектор С(6). Найти сумму тех его...

Векторы!!! - C++
Как найти произведение двух векторов и записать это в рабочем варианте допустим у меня 1 вектор(5,6,7) и второй (7,8,9) мне что нужно...

Векторы - C++
Определите полусумму длин двух векторов А(1,5; 2,5; -0,3) и В(-11,7; -9,3; 2,5; 3,7; -1,2). Вычислите, длины вектора оформив в виде функции.

Векторы - C++
Изучаю сейчас библиотеку vector. #include &lt;vector&gt; int main() { std::vector&lt;int&gt; v(2); // Создаем вектор, состоящий из двух...

векторы С++ - C++
С текстового файла считать действительные числа в вектор. С вектора удалить все нечетные положительные числа. Образованные элементы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
13.12.2013, 22:09 #2
Цитата Сообщение от EdNaron Посмотреть сообщение
void Sum () //сложение
* { struct Sum {double x, y;};
* *Sum.x=Vec_a.x + Vec_b.x;
* *Sum.y=Vec_b.y + Vec_b.y;}
и чего ты сч ем здесь складываешь?
кто такие Vec_a и Vec_b?
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
13.12.2013, 22:16  [ТС] #3
В основной программе спрашиваем значение Vec_a( X и Y)(начало вектора) Vec_b( X и Y)(конец вектора) (структура) передаем эти значения в класс в функцию Sum (сложения), или я что то не так написал? Заранее прошу прощения за безграмотность
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
13.12.2013, 22:21 #4
Цитата Сообщение от EdNaron Посмотреть сообщение
В основной программе спрашиваем значение Vec_a( X и Y)(начало вектора) Vec_b
где они у тебя определены?
и что за смесь Си и плюсов
Цитата Сообщение от EdNaron Посмотреть сообщение
class Vectors
Цитата Сообщение от EdNaron Посмотреть сообщение
struct Vector Vec;
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
13.12.2013, 22:39  [ТС] #5
Мне задали написать на С++, и проблема как раз в том, как это написать. Подскажите пожалуйста как это правильней будет
Общая структура:
<подключаем библиотеки>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using namecpase std;
class Vectors
public:
структура вектор ( х, у)
void...функции (+,-,*, d);
 
int main()
{вот тут не знаю как (как обратиться и занести данные в класс Vectors в струкуру Вектор координаты х и у)
просим ввести векторы вручную через 
cout<<"введите х"; 
cin>>*1*x; 
cout<<"введите y"; 
cin>>*1*y;
Так как координаты 2 то просим еще раз ввести в структуру Вектор 
cout<<"введите х"; 
cin>>*2*x;
cout<<"введите y"; 
cin>>*2*y;
cout<<"введите количество элементов в массиве";
cin>>n;
for (int i=0; i<n; i++)
вычисляем длину каждого вектора из функции
Вывод матрицы до сортировки;
а дальше в виде числа организуем сортировку в нужном порядке
Вывод матрицы после сортировки
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
13.12.2013, 22:44 #6
ну примерно так
C++
1
2
3
4
5
6
7
8
9
10
class Vectors
{
 double x;
 double y;
....................................
 
int Main()
{
Vectors vec;
...........................
Добавлено через 2 минуты
Цитата Сообщение от EdNaron Посмотреть сообщение
Так как координаты 2 то просим еще раз ввести в структуру Вектор
откуда две координаты?
Цитата Сообщение от EdNaron Посмотреть сообщение
struct Vector {double X, Y;};
я одну вижу
и даже это не координаты скорее всего а длинна по X и по Y
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
14.12.2013, 13:23  [ТС] #7
По заданию надо сделать структуру Vector (double x,y) внутри класса. Сложная конструкция. я не знаю как это реализовать. В книжке написано, что класс и структура это почти одно и то же, только в одном можно использовать функции, а в другом - нельзя.

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
Originally Posted by EdNaron
Так как координаты 2 то просим еще раз ввести в структуру Вектор
откуда две координаты?
1) для начала вектора (х,у)
2) для его конца (х,у)

Добавлено через 14 часов 30 минут
Может так
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
#include <iostream>
#include <cmath>
using namespace std;
struct Vec {double x, y;};
class Vectors 
{
private:
Vec Value_1;
Vec Value_2; //Г*Г*çâГ*Г*ГЁГҐ ïåðåìåГ*Г*îé - Value 
public:
void SetValues(float ax, float ay, float bx, float by) 
{
Value_1.x=ax; 
Value_1.y=ay;
Value_2.x=bx; 
Value_2.y=by;
}       
void Sum (Vectors *sc) //ñëîæåГ*ГЁГҐ
{
Value_1.x+=sc->Value_1.x; //Г*Г*Г*ëîã (*sc).Value.x
Value_1.y+=sc->Value_1.y;
}
/*
void Sub (Vectors *sc) //ñëîæåГ*ГЁГҐ
{
Value.x-=sc->Value.x; //Г*Г*Г*ëîã (*sc).Value.x
Value.y-=sc->Value.y;
}
 
void Scale (Vectors *sc) //ñëîæåГ*ГЁГҐ
{
Value.x*=sc->Value.x; //Г*Г*Г*ëîã (*sc).Value.x
Value.y*=sc->Value.y;
} */
 
};              
int main()
{double ax,ay,bx,by,n;
    system("chcp 1251");
    cout<<"vvedite n ";
    cin>>n;
   //for (int i=0; i<n; i++)
    cout<<"vvedite ax "; cin>>ax;
    cout<<"vvedite ay "; cin>>ay;
    cout<<endl;
    cout<<"vvedite bx "; cin>>bx;
    cout<<"vvedite by "; cin>>by;
    Vectors::Sum(ax,ay);
   system("PAUSE");
    return 0;
}
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
15.12.2013, 13:47  [ТС] #8
Помогите пожалуйста
zss
Модератор
Эксперт С++
6365 / 5929 / 1923
Регистрация: 18.12.2011
Сообщений: 15,237
Завершенные тесты: 1
15.12.2013, 14:13 #9
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
#include <iostream>
#include <cmath>
using namespace std;
struct Vectors 
{
public:
   double X,Y;
   Vector():X(0),Y(0){} // конструктор по умолчанию
   Vector(double x,double y):X(x),Y(y){} // конструктор
   Vector(const Vector &v):X(v.X),Y(v.Y){} // копиконструктор
   Vector Sum (Vector v) //сложение
   { 
        Vector t(*this);
        t.X+=v.X;
        t.Y+=v.Y;
        return t;
    }
   double Scale (Vector v) //скалярное умножение
   {
           return X*v.X+y*v.Y;
   }
 };
int main()
{
    int n; 
    system("chcp 1251");
    cout<<"Введите количество элементов массива";
    cin>>n;
    double x;
    cout<<"Введите координату x="; 
    cin>>x; //Вводим значение х для вектора
    cout<<endl;
    cout<<"Введите координату y="; 
    double y;cin>>y; //Вводим значение у для вектора
    Vector Vec_a(x,y); //определение структурной переменной Vec_a c Vec_a.X=x Vec_a.Y=y
    cout << "Vec a  = " << Vec_a.X<<";"<<Vec_a.Y //вывод вектора a в виде Vec a = 4 ; 2
    Cout<<endl;
    cout<<"Введите координату x="; 
    cin>>x; //Вводим значение х для вектора
    cout<<endl;
    cout<<"Введите координату y="; 
    cin>>y; //Вводим значение у для вектора
    Vector Vec_b(x,y); //определение структурной переменной Vec_b c Vec_b.X=x Vec_b.Y=y
    cout << "Vec b  = " << Vec_b.X<<";"<<Vec_b.Y //вывод вектора a в виде Vec a = 4 ; 2
    Vec_b=Vec_a+Vec_b; // сложение
    cout << "Vec b  = " << Vec_b.X<<";"<<Vec_b.Y //вывод вектора a в виде Vec a = 4 ; 2
    x=Vec_a.Scale(Vec_b); // скалярное произведение
    Cout<<"scalarnoe proizv="<<x<<endl;
    system("PAUSE");
    return 0;
}
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
15.12.2013, 17:06  [ТС] #10
Спасибо большое, но мне нужно реализовать функции в виде класса подпрограмм, а структурой описать только Vector
zss
Модератор
Эксперт С++
6365 / 5929 / 1923
Регистрация: 18.12.2011
Сообщений: 15,237
Завершенные тесты: 1
15.12.2013, 17:20 #11
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 <cmath>
using namespace std;
class Vector 
{
public:
    struct VEC 
    {
         double X,Y;
    };
   VEC vec;
   Vector(){vec.X=vec.Y=0;} // конструктор по умолчанию
   Vector(double x,double y){vec.X=x;vec.Y=y;} // конструктор
   Vector(const Vector &v){vec.X=v.vec.X;vec.Y=v.vec.Y;} // копиконструктор
   Vector Sum (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;
   }
 };
int main()
{
    int n; 
    system("chcp 1251");
    cout<<"Введите количество элементов массива";
    cin>>n;
    double x;
    cout<<"Введите координату x="; 
    cin>>x; //Вводим значение х для вектора
    cout<<endl;
    cout<<"Введите координату y="; 
    double 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 ;//вывод вектора a в виде Vec a = 4 
    cout<<endl;
    cout<<"Введите координату x="; 
    cin>>x; //Вводим значение х для вектора
    cout<<endl;
    cout<<"Введите координату y="; 
    cin>>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 << "Vec b  = " << Vec_b.vec.X<<";"<<Vec_b.vec.Y ;//вывод вектора a в виде Vec a = 4 
    x=Vec_a.Scale(Vec_b); // скалярное произведение
    cout<<"scalarnoe proizv="<<x<<endl;
    system("PAUSE");
    return 0;
}
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
17.12.2013, 10:20  [ТС] #12
Спасибо большое спаситель моей курсовой!!!

Добавлено через 23 часа 42 минуты
zss, Извините, а не могли бы вы помочь организовать сортировку по длине
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;
}
Добавлено через 16 часов 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
141
142
143
144
145
146
147
148
149
#include <iostream>
#include <cmath>
using namespace std;
class Vector 
{
public:
    struct VEC 
    {double X,Y;};
   VEC vec;
   VEC vecM[30];
   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));
   }      
   
   double DlinaM (VEC VecM) //длина вектора
   {int i;
           return sqrt(pow(vecM[i].X,2) + pow(vecM[i].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;}*/
    
double k1, k2, d1, d2;
int i; 
 
for( i=0; i<n-1; i++) //перемещает только первый элемент
{
     
      d1=Vec_a.DlinaM(Vec_a.vecM[i]);//pow(Vec_a.vecM[i].X,2)+pow(Vec_a.vecM[i].Y,2);//Vec_a.Dlina.vecM[i];//DlinaM(Vec_a.VecM[i]); // Vec_a.Dlina.vecM[i];
      d2=Vec_a.DlinaM(Vec_a.vecM[i+1]);//=pow(Vec_a.vecM[i+1].X,2)+pow(Vec_a.vecM[i+1].Y,2);
        
        if(d1<d2)  
        k1=Vec_a.vecM[i].X; 
        k2=Vec_a.vecM[i].Y;
        Vec_a.vecM[i].X = Vec_a.vecM[i+1].X;
        Vec_a.vecM[i].Y = Vec_a.vecM[i+1].Y;
        Vec_a.vecM[i+1].X=k1;
        Vec_a.vecM[i+1].Y=k2;
 
          
      
}
for ( i=0; i<n; i++) //Вывод массива
        {cout << "(" << Vec_a.vecM[i].X<<";"<<Vec_a.vecM[i].Y<<")  " ;}
    cout<<endl;       
 
         
    system("PAUSE");
    return 0;
}
zss
Модератор
Эксперт С++
6365 / 5929 / 1923
Регистрация: 18.12.2011
Сообщений: 15,237
Завершенные тесты: 1
17.12.2013, 10:30 #13
во первых, Вы забыли скобки
C++
1
2
3
4
5
6
7
8
9
if(d1<d2) 
{ 
        k1=Vec_a.vecM[i].X; 
        k2=Vec_a.vecM[i].Y;
        Vec_a.vecM[i].X = Vec_a.vecM[i+1].X;
        Vec_a.vecM[i].Y = Vec_a.vecM[i+1].Y;
        Vec_a.vecM[i+1].X=k1;
        Vec_a.vecM[i+1].Y=k2;
}
А во вторых,
Весь этот цикл (по i) надо повторить n раз,
чтобы самый нижний элемент массива
мог всплыть на самый верх.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for(j=0;j<n;j++)
{
  for( i=j; i<n-1; i++) 
  {
     
      d1=Vec_a.DlinaM(Vec_a.vecM[i]);
      d2=Vec_a.DlinaM(Vec_a.vecM[i+1]);
        
        if(d1<d2)
        {  
          k1=Vec_a.vecM[i].X; 
          k2=Vec_a.vecM[i].Y;
          Vec_a.vecM[i].X = Vec_a.vecM[i+1].X;
          Vec_a.vecM[i].Y = Vec_a.vecM[i+1].Y;
          Vec_a.vecM[i+1].X=k1;
          Vec_a.vecM[i+1].Y=k2;
        }
  }
}
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
17.12.2013, 10:34  [ТС] #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
double k1, k2, d1, d2, min, max;
int i, j; 
for (j=0; j<n; j++)
{
 
for( i=0; i<n-1; i++) //ïåðåìåùГ*ГҐГІ òîëüêî ïåðâûé ýëåìåГ*ГІ
{
    min=Vec_a.DlinaM(Vec_a.vecM[i]);
    max=Vec_a.DlinaM(Vec_a.vecM[i+1]);
    {       
        if(min<max)  
        k1=Vec_a.vecM[i].X; 
        k2=Vec_a.vecM[i].Y;
        Vec_a.vecM[i].X = Vec_a.vecM[i+1].X;
        Vec_a.vecM[i].Y = Vec_a.vecM[i+1].Y;
        Vec_a.vecM[i+1].X=k1;
        Vec_a.vecM[i+1].Y=k2;
    }
          
}
все равно не хочет работать, он перемещает только первый элемент
Ev_Hyper
Заблокирован
17.12.2013, 10:37 #15
Написали же: вы забыли оформить if(min<max) {...} в скобки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 10:37
Привет! Вот еще темы с ответами:

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

Векторы! - C++
Введите вектор и найдите его норму: сумму абсолютных величин координат. Что значит сумму абсолютных величин координат. объясните сам...

Векторы - C++
Добрый день форумчане! обнаружил что вектор можно объявить следующим образом : vector&lt;MyClass *,MyClass2 *&gt; vector_name; ...

Векторы - C++
Создаю вектор vector&lt;vector&lt;Point&gt;&gt; contours; После чего мне нужно создать аналогичный простой массив Array, элемент которого был бы...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.12.2013, 10:37
Ответ Создать тему
Опции темы

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