0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 11
1

Оптимизация повторяющихся строк в коде

25.08.2019, 10:28. Показов 1261. Ответов 7
Метки нет (Все метки)

Суть проблемы: У меня в коде очень много повторяющихся элементов по типу

C++
1
2
3
4
5
6
7
8
9
Vektora2D[FunkcioZnach[ChetchikPoradkaZnachenia][12]] [0].push_back(KakoyIsRezultatov21);
Vektora2D[FunkcioZnach[ChetchikPoradkaZnachenia][12]] [1].push_back(KakoyIsRezultatov22);
 
Vektora2D[FunkcioZnach[ChetchikPoradkaZnachenia][12]] [2].push_back(KakoyIsRezultatov34);
Vektora2D[FunkcioZnach[ChetchikPoradkaZnachenia][12]] [3].push_back(KakoyIsRezultatov35);
 
Vektora2D[FunkcioZnach[ChetchikPoradkaZnachenia][12]] [4].push_back((sqrt(((FunkcioZnach[ChetchikPoradkaZnachenia][3]-FunkcioZnach[ChetchikPoradkaZnachenia][1])/1000)*((FunkcioZnach[ChetchikPoradkaZnachenia][3]-FunkcioZnach[ChetchikPoradkaZnachenia][1])/1000)+((FunkcioZnach[ChetchikPoradkaZnachenia][2]-FunkcioZnach[ChetchikPoradkaZnachenia][0])/1000)*((FunkcioZnach[ChetchikPoradkaZnachenia][2]-FunkcioZnach[ChetchikPoradkaZnachenia][0])/1000)))*1000);
 
Vektora2D[FunkcioZnach[ChetchikPoradkaZnachenia][12]] [5].push_back(UgolVektorOtNula(KakoyIsRezultatov34-KakoyIsRezultatov21,KakoyIsRezultatov35-KakoyIsRezultatov22));
Прикрепил скриншот, по которому видно, что этими мастодонтами "загажена" немалая часть кода. Вопрос: Как сделать функцию, в которую загружаешь переменные, а она самостоятельно вводит в массив 6 значений согласно заданному алгоритму?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Оптимизация повторяющихся строк в коде  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2019, 10:28
Ответы с готовыми решениями:

Оптимизация поиска повторяющихся строк по условию
Добрый день! Люблю такие задачки но не смог решить ее, чтобы работало быстро :( Dim...

Оптимизация кода - сокращение повторяющихся фрагментов
using System; ... namespace Raksti_1 { public partial class MainWindow : Window { ...

Удаление повторяющихся чисел. Ошибка в коде
Удаление повторяющихся чисел.Ошибка в коде. Помогите найти ошибку в коде.Программа ищет...

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии "оптимизатора" в какой то умной книжке был...

7
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.08.2019, 11:10 2
Циклы.
0
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 11
25.08.2019, 11:14  [ТС] 3
У меня этот тихий ужас встречается в нескольких
C++
1
Case :
за раз, к тому же мне придется сделать кучу Case() где данная фигня будет встречаться 1 раз, я допускаю что в итоговой версии программы у меня будет больше 100 Case в которых содержится 1 или более подобной функции
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.08.2019, 11:19 4
Так разбейте данный по разным структурам, чтобы не пришлось использовать условные операторы. Из того куска кода, который вы привели, можно хотя бы первые четыре строчки в цикл запихнуть, если, кончено, будете иметь массив KakoyIsRezultatov, а не несколько переменных.

Если код такой, что при обработке данных в массиве обязательно использовать кучу case/ifelse, советую пересмотреть архитектуру всего приложения
0
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 11
25.08.2019, 11:34  [ТС] 5
У меня и так все что можно зациклено. Суть данного кода - он рисует 5 (Фиксировано) N-Угольников и связывает соответствующие их отрезки линиями (Например N = 3 тогда он рисует 5 треугольников ABC и связывает их соответствующие стороны (Например, А1А2, А1А3, А1А4 и А1А5)), прикрепил скриншот примера работы этого ужаса для 3-угольника и 25-и угольника. Мне надо сделать как то так:

MakeVector2D (Х1, Х2, У1, У2);

А он при виде такой конструкции сразу проводит операции и заполняет все 6 ячеек вектора (4 координаты, длина, угол)

P.S. В длине в исходном коде написана жуть так как пока я не пользуюсь этой переменной и это костыль.
0
Миниатюры
Оптимизация повторяющихся строк в коде   Оптимизация повторяющихся строк в коде  
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.08.2019, 12:05 6
Тогда создайте функцию, запихните в нее эти строки раз они такие уникальные.

Добавлено через 4 минуты
Не знаю, я вам говорю настолько очевидные вещи, что мне даже неловко немного. Проведите рефакторинг кода, если вы хотите создавать вектор с помощью MakeVector2D (Х1, Х2, У1, У2);, но текущая архитектора программы вам этого не позволяет, значит надо что-то менять: убирать костыли, пересмотреть хранение данных, как используются те или иные параметры и зачем.
0
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 11
25.08.2019, 12:07  [ТС] 7
Вот это мне и надо. Только как я понимаю функции, в неё помещаешь N-ное число переменных, на что она возвращает что-либо. А мне надо, чтобы одна функция записывала 6 переменных в трехмерный массив. И вот как сделать это я не понимаю(((

UPD: То есть сделать функцию которая получает 4 аргумента и записывает куда либо 6 элементов вообще нельзя?
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.08.2019, 12:22 8
Лучший ответ Сообщение было отмечено Mc1m12 как решение

Решение

Цитата Сообщение от Mc1m12 Посмотреть сообщение
функция записывала 6 переменных в трехмерный массив.
Передавайте массив, в который нужно что-то записать, по ссылке
C++
1
2
3
4
5
6
7
8
9
typedef vector<vector<vector<TYPE>>> tdArray;//three dimensional arr
 
void write6(tdArray &arr, TYPE val1, TYPE val2, TYPE val3, ...)
{
    arr.push_back(val1);
    arr.push_back(val2);
    arr.push_back(val3);
    ...
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2019, 12:22

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Оптимизация замен в коде (Replace)
Здравствуйте! периодически в коде использую замены вида Target.Replace What:=&quot; &quot;,...

Удаление повторяющихся строк
Категорическое здрям! Есть файл, в котором строки зачетверены. Подскажите, пожалуйста, как...

Выборка не повторяющихся строк из БД
Мені потрібно з таблиці(бази даних) витянути з 60 питань тільки 10 і так щоб вони не...

Поиск повторяющихся строк
Всем привет! Мне необходимо сделать макрос, который будет выделять цветом все повторяющиеся строки...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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