С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
1

Нужно ли производить оптимизацию функции

07.04.2017, 15:10. Показов 524. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал ф-цию:
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
    ofstream fout("Code.xml");
    fout << "&amp;#10;  \'[LINK=]
[\\LINK]\'  &amp;#13;   \'[LINK=]
[\\LINK]\'  &amp;#9;    \'[LINK=]   [\\LINK]\'\n";
    for(int i(31), j(0); ++i <= 8785;)
    {
        fout << endl;
        if(i == 256) {fout << "\n&amp;#256; &#151; &amp;#1039;"; j = 1039; goto Apostrophe;}
        if(i == 1104) {fout << "\n&amp;#1104; &#151; &amp;#8482;"; j = 8482; goto Apostrophe;}
        if(i == 8541) {fout << "\n&amp;#8541; &#151; &amp;#8557;"; j = 8557; goto EmptyTab;}
        if(i == 8583) {fout << "\n&amp;#8583; &#151; &amp;#8607;"; j = 8607; goto EmptyTab;}
        if(i == 8653) {fout << "\n&amp;#8653; &#151; &amp;#8657;"; j = 8657; goto EmptyTab;}
        if(i == 8703) {fout << "\n&amp;#8703; &#151; &amp;#8732;"; j = 8732; goto EmptyTab;}
        if(i == 8785) {fout << "\n&amp;#8784; &#151; &amp;#55295;"; j = 55295; goto Empty;}
 
        if( (i >= 32) && (i <= 50) )
            for(int j(i); j < 260; j += 19) if(j <= 255)
                    fout << "✏&amp;#" << j << ";[LINK=]&#" << j << ";[\\LINK] ";
                else fout << "      ";
        if(i == 50) i = 255;
 
        if( (i >= 1040) && (i <= 1047) )
            for(int j(i); j < 1104; j += 8)
                    fout << "✏&amp;#" << j << ";[LINK=]&#" << j << ";[\\LINK]" << ((j+8 <= 1103)?("   "):(""));
        if(i == 1047) i = 1103;
 
        if( (i >= 8483) && (i <= 8490) )
            for(int j(i); j < 8547; j += 8) if(j <= 8540)
                    fout << "✏&amp;#" << j << ";[LINK=]&#" << j << ";[\\LINK] ";
                else fout << "          ";
        if(i == 8490) i = 8540;
 
        if( (i >= 8558) && (i <= 8562) )
            for(int j(i); j < 8583; j += 5)
                    fout << "✏&amp;#" << j << ";[LINK=]&#" << j << ";[\\LINK] ";
        if(i == 8562) i = 8582;
 
        if( (i >= 8608) && (i <= 8613) )
            for(int j(i); j < 8656; j += 6) if(j <= 8652)
                    fout << "✏&amp;#" << j << ";[LINK=]&#" << j << ";[\\LINK] ";
                else fout << "          ";
        if(i == 8613) i = 8652;
 
        if( (i >= 8658) && (i <= 8663) )
            for(int j(i); j < 8706; j += 6) if(j <= 8702)
                    fout << "✏&amp;#" << j << ";[LINK=]&#" << j << ";[\\LINK] ";
                else fout << "          ";
        if(i == 8663) i = 8702;
 
        if( (i >= 8733) && (i <= 8739) )
            for(int j(i); j < 8789; j += 7) if(j <= 8784)
                    fout << "✏&amp;#" << j << ";[LINK=]&#" << j << ";[\\LINK]     ";
                else fout << "          ";
        if(i == 8739) i = 8784;
 
        continue;
        Apostrophe:
        {
            int o(i);
            while(i <= j)
            {
                    if( (i-o) % 70 == 0 ) fout << "\n\'";
                    fout << "[LINK=]&#" << i++ << ";[\\LINK]\'";
            }
            fout << endl; --i; 
        }
 
        continue;
        EmptyTab:
        {
            int o(i);
            while(i <= j)
            {
                if( (i-o) % 24 == 0 ) fout << endl;
                fout << "\'[LINK=]&#" << i++ << ";[\\LINK]\'    ";
            }
            fout << endl; --i;
        }
 
        continue;
        Empty:
        {
            int o(i);
            while(i <= j)
            {
                if( (i-o) % 235 == 0 ) fout << "\n\'";
                fout << "&#" << i++ << ";\'";
            }
            --i;
        }
    }
    fout.close();
Результат работы в xml и на скниншоте

Я конечно вижу что её можно уменьшить в плане букв, но нужно ли это делать?
Миниатюры
Нужно ли производить оптимизацию функции  
Вложения
Тип файла: 7z Code.7z (26.6 Кб, 1 просмотров)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
07.04.2017, 15:10
Ответы с готовыми решениями:

Нужно ли производить какую-либо оптимизацию SSD диска на Win10/Win7?
Всем привет! Уточняющий вопрос, т.к. на счёт этого разные мифы и статьи в интернете написаны. ...

Функции внутри класса влияют на оптимизацию?
Хочу сделать класс с приватной строкой хранящей имя и выводить её через метод класса, рационально...

В текстовом файле производить перезапись строк не последовательно а те, которые нужно
суть в том что я только знаю как можно переписать строки текстового файла последовательно но не...

Почему изотермическое расширение (сжатие) нужно производить медленно, а адиабатическое очень быстро?
Почему адиабата идет круче изотермы? Почему изотермическое расширение (сжатие) нужно производить...

13
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
07.04.2017, 15:18  [ТС] 2
Не знаю почему, но ваш редактор не сохранил форматирование
хотя на другом форуме, не программистком, нормально все вставилось, даже табы сохранились там, а тут...
вот выложил код:
(кто захочет у себя запустить

Так же ваш форум покоцал картинку, поэтому перезалил:
Кликните здесь для просмотра всего текста
Вложения
Тип файла: txt Code.cpp.txt (2.8 Кб, 1 просмотров)
0
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
07.04.2017, 15:25  [ТС] 3
Ссори, не нашел способ как отобразить по другому картинку на форуме
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.04.2017, 15:27 4
В вашем коде хрен кто разберётся. Поэтому (раз вы всё равно пишите одноразовые функции), "работает - не трогай"
1
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
07.04.2017, 15:47  [ТС] 5
Минуточку, я ещё не завершил с комментариями, не стоит делать поспешных выводов

Эту строчку и подобные ей:
C++
1
if(i == 256) {fout << "\n&amp;#256; — &amp;#1039;"; j = 1039; goto Apostrophe;}
наверное можно преобразовать в ф-цию:
C++
1
temp(i)
Эта строчка и подобные ей:
C++
1
2
3
4
5
        if( (i >= 32) && (i <= 50) )
            for(int j(i); j < 260; j += 19) if(j <= 255)
                    fout << "✏&amp;#" << j << ";[LINK=]&#" << j << ";[\\LINK] ";
                else fout << "      ";
        if(i == 50) i = 255;
Строится по принципу:
C++
1
2
3
4
5
        if( (i >= 32) && (i <= 32+19-1) ) // Цикл выполнится 19 раз
            for(int j(i); j < 32+19*12; j += 19) if(j <= 255) // Цикл выполнится 12 раз  
                    fout << "✏&amp;#" << j << ";[LINK=]&#" << j << ";[\\LINK] "; // 255 - последний символ 
                else fout << "      ";
        if(i == 32+19-1) i = 255; // 255 - последний символ
Добавлено через 2 минуты
Нужно ли было пробовать обходится без goto?
и можно ли это сделать?
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.04.2017, 15:48 6
Цитата Сообщение от eXPonent Посмотреть сообщение
Нужно ли было пробовать обходится без
нужно
Цитата Сообщение от eXPonent Посмотреть сообщение
и можно ли это сделать?
можно. Любой код с goto можно переписать на код без goto.
0
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
07.04.2017, 15:54  [ТС] 7
Хорошо, пример для этого кода есть?
использовать функции?, а потом continue?

Добавлено через 1 минуту
Но если использовать функции. тогда будет более логично, если весь код будет состоять из меленьких функций, потипу что я описал
и ещё, можно ли объявить функцию в функции, что бы было сразу понятно что данная функция используетсчя только внутри этой функции
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.04.2017, 15:58 8
Цитата Сообщение от eXPonent Посмотреть сообщение
использовать функции?, а потом continue?
У вас тут куча связанных однобуквенных переменных, но в идеале да - вывести содержимое этих блоков в отдельные функции. А continue будет не нужен если переписать на if-else if / switch-case

Добавлено через 2 минуты
Цитата Сообщение от eXPonent Посмотреть сообщение
и ещё, можно ли объявить функцию в функции
Нет. Только если лямбды.
Если хотите инкапуслировать поведение - создайте класс с набором закрытых методов и одним/несколькими публичных, которые вызывали бы закрытые в зависимости от ситуации.
0
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
07.04.2017, 15:59  [ТС] 9
Можно ли объявить функцию в функции?
Цитата Сообщение от eXPonent Посмотреть сообщение
что бы было сразу понятно что данная функция используетсчя только внутри этой функции
Добавлено через 43 секунды
ok, а что такое лямбды?

Добавлено через 46 секунд
Применимы ли они в c++2010 ?
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.04.2017, 16:00 10
Цитата Сообщение от eXPonent Посмотреть сообщение
ok, а что такое лямбды?
лямбда-функции. Пришли со стандартом С++11
0
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
07.04.2017, 16:01  [ТС] 11
Если я не буду использовать их в своем коде, это не критично?
0
806 / 533 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
07.04.2017, 16:02 12
Цитата Сообщение от eXPonent Посмотреть сообщение
Нужно ли производить оптимизацию функции
Преждевременная оптимизация и оптимизация ради оптимизации - это корень многих бед в программировании
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
07.04.2017, 16:08 13
Цитата Сообщение от eXPonent Посмотреть сообщение
Если я не буду использовать их в своем коде, это не критично?
Вы так спрашиваете, как будто я ваш руководитель.
Используйте что хотите и как хотите, вы сами себе придумали задачу - сами написали решение. Что при этом использовать - ваше дело. На производительность наличие/отсутствие лямбда-функций не влияет.
0
99 / 52 / 27
Регистрация: 21.05.2012
Сообщений: 1,170
07.04.2017, 16:10  [ТС] 14
Ferrari F1, так функция почти дописана...
Цитата Сообщение от eXPonent Посмотреть сообщение
C++
1
if(i == 256) {fout << "\n&amp;#256; — &amp;#1039;"; j = 1039; goto Apostrophe;}
Можно как то обойтись без map?
Что бы по ключу i находило j...
0
07.04.2017, 16:10
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
07.04.2017, 16:10
Помогаю со студенческими работами здесь

При нажатии на определённую область изображения производить некоторые функции
Есть изображение карты города (обычная картинка типа 1000px * 1000px). Есть 20 областей на...

Нужно на листе заказа при вводе номера артикула в любую ячейку столбца С, производить поиск на базовом листе в столбце 'А'
Есть базовый лист с двумя столбцами - 'А'-Артикул и 'В'-Наименование Нужно на листе заказа при...

произвести вычисление значений функций. Результаты вычислений вывести в компонент ListBox. Выбор вычисляемой функции производить, используя компонент RadioButton.
Для ЛП произвести вычисление значений функций. Результаты вычислений вывести в компонент ListBox....

Почему, кавычки в функции ставить не нужно а в ее параметрах нужно!
Добрый вечер всем откликнувшимся. Почему при создании функции, значения параметров не заключаются...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru