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

Поиск min и max - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа со стеком (вытащить значение и сохранить в переменную) http://www.cyberforum.ru/cpp-beginners/thread1162651.html
Привет всем! Пишу я лабораторку по моделированию систем. И столкнулся с проблемой вытаскивания значений из стека и сохранение в переменную. Как можно это реализовать? З.Ы Переменная в последствии...
C++ Повторный запуск main() равен перезапуску программы? Добрый день. Если в коде какой либо функции я вызову main() c которой у меня начинается выполнение программы, то будет ли это равно перезапуску программы(освобождение всей используемой до этого... http://www.cyberforum.ru/cpp-beginners/thread1162644.html
C++ Как сделать так, чтобы значения экземпляров класса не повторялись
Я пытаюсь написать игру 2048. Коротко об игре, для тех кто не знает: Есть поле 4х4 в нем появляются на случайной позиции квадратики с значением 2 или 4, используя клавиши вправо,влево,вверх,вниз то...
C++ Считывание из текстового файла
Всем привет. У меня есть текстовый файл в котором, к примеру записана информация:"Фамилия Имя". Как мне из этого файла по словно считать информацию в переменные, то есть что бы переменные...
C++ Изменение размера массива http://www.cyberforum.ru/cpp-beginners/thread1162616.html
Допустим в main-е я объявил указатель определенного типа и создал переменную int size, затем адрес указателя и переменной size передаю первую функцию. В ней меняется значение переменной size и...
C++ Разработать метод, который нечетное число заменяет на 0,а четное число уменьшает в два раза Разработать метод f (х) , который нечетное число заменяет на 0, а четное число уменьшает в два раза. Продемонстрировать работу данного метода на примере. подробнее

Показать сообщение отдельно
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
01.05.2014, 12:50  [ТС]
grizlik78, что-то я не много не понял ваш метод, я пока сделал так:
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
qSortX(x, num-1);//сортирую массив х по возрастанию
for(int i = 0; i < num; i++)
            {
                if(i - 1 >= 0)
                {
                    ldx = x[i-1].pos.x - x[0].pos.x; //беру крайние элементы в подмассиве
                    if(ldx == 0)
                        ldx = 1;
                    float lminy, lmaxy, lminz, lmaxz;
                    lminy = lmaxy = x[0].pos.y;//осуществляю поиск минимального и максимального эелемнта в левом подмассиве
                    lminz = lmaxz = x[0].pos.z;
                    for(int j = 0; j < i; j++)
                    {
                        if(lminy > x[j].pos.y)
                            lminy = x[j].pos.y;
                        if(lmaxy < x[j].pos.y)
                            lmaxy = x[j].pos.y;
 
                        if(lminz > x[j].pos.z)
                            lminz = x[j].pos.z;
                        if(lmaxz < x[j].pos.z)
                            lmaxz = x[j].pos.z;
                    }
                    ldy = lmaxy-lminy;
                    if(ldy == 0)
                        ldy = 1;
                    ldz = lmaxz-lminz;
                    if(ldz == 0)
                        ldz = 1;
                }
                //тоже самое только для правого подмассива
                if(i + 1 < num)
                {
                    rdx = x[num-1].pos.x - x[i+1].pos.x;
                    if(rdx == 0)
                        rdx = 1;
                    float rminy, rmaxy, rminz, rmaxz;
                    rminy = rmaxy = x[0].pos.y;
                    rminz = rmaxz = x[0].pos.z;
                    for(int j = num-1; j > i; j--)
                    {
                        if(rminy > x[j].pos.y)
                            rminy = x[j].pos.y;
                        if(rmaxy < x[j].pos.y)
                            rmaxy = x[j].pos.y;
 
                        if(rminz > x[j].pos.z)
                            rminz = x[j].pos.z;
                        if(rmaxz < x[j].pos.z)
                            rmaxz = x[j].pos.z;
                    }
                    rdy = rmaxy-rminy;
                    if(rdy == 0)
                        rdy = 1;
                    rdz = rmaxz-rminz;
                    if(rdz == 0)
                        rdz = 1;
                }
                int Cl = i;
                int Cr = num - 1 - i;
 
                float Vl, Vr;
                if(Cl > 0)
                    Vl = ldx*ldy*ldz;
                else
                    Vl = 0;
 
                if(Cr > 0)
                    Vr = rdx * rdy * rdz;
                else
                    Vr = 0;
 
                vvh a;
                a.ind = i;
                a.VVH = ((Cl*Vl)/Vd) + ((Cr*Vr)/Vd); 
                VVH.push_back(a);
 
            }
при num = 262000 на все уходит около 5-ти минут, нужно еще быстрее...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru