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

Векторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Передача функции заранее неизвестного объекта http://www.cyberforum.ru/cpp-beginners/thread1040495.html
Здравствуйте. Можно ли не используя шаблонов передать функции объект заранее неизвестного класса и применить к нему функцию-член? #include <iostream> #include "Cat.h" #include "Dog.h" using...
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,...
C++ подскажите новичку добрые друзья(
всем ПРИВЕТ =) ребята хотел у вас спросить, с чего надо начинать, что бы понимать программировании, проста с задачам который мне надо было решать )здесь помогли, но хочу понять ) как надо правильно...
C++ Двумерный массив http://www.cyberforum.ru/cpp-beginners/thread1040467.html
прошу растолковать, впереди сессия, очень нужно!!
C++ Не могу понять условие Здравствуйте! Помогите мне понять задание: Разработать программу для решения эллиптического уравнения Uxx+Uyy=0, используя метод прогонки по строкам, для следующих условий: x (0, 10), y (0, 10);... подробнее

Показать сообщение отдельно
EdNaron
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 18
17.12.2013, 11:50  [ТС]
я опечатался, простите, сразу же исправил. по циклу все так же не сортирует
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int i, j; 
 
    for( j=0; j<n; j++) //ïåðåìåùГ*ГҐГІ òîëüêî ïåðâûé ýëåìåГ*ГІ
     { 
         for (i=j; 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;
                        } 
                   }
                   
            }     
     }
Добавлено через 53 минуты
Извините за назойливость, но я не понимаю, реализовал функцию сортировки через функцию в классе, в качестве функции использовал шаблон функций сортировки из раздела для новичков, вот код, и он по прежнему перекидывает только один элемент
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
#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));
   }      
   
   void Sort(VEC VecM, int n)
{
 VEC tmp;
 
    for(int i = 0; i < n - 1; ++i) // i - номер прохода
    {            
        for(int j = i; j < n - 1; ++j) // внутренний цикл прохода
        {     
            if (DlinaM(vecM[j+1]) < DlinaM(vecM[j])) 
            {
                tmp = vecM[j+1]; 
                vecM[j+1] = vecM[j]; 
                vecM[j] = tmp;
            }
        }
    }
}
 };
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;    
    
double k1, k2, d1, d2, min, max;
int i, j; 
 
Vec_a.Sort(Vec_a.vecM[i],n);
 
for ( i=0; i<n; i++) //Вывод массива
        {cout << "(" << Vec_a.vecM[i].X<<";"<<Vec_a.vecM[i].Y<<")  " ;}
    cout<<endl;       
 
         
    system("PAUSE");
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru