powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с циклом
18 сообщений из 43, страница 2 из 2
Помогите с циклом
    #39070345
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

замена цикла на условие - понизит сложность?
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070347
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилmayton,

замена цикла на условие - понизит сложность?
Я прошу прощения. Ты меня всё время передёгиваешь! Я нигде не предлагал вводить условия!
Я спросил о ВОЗМОЖНОСТИ избавиться от двух циклов.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070381
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилmayton,

замена цикла на условие - понизит сложность?
Ну если цикл перенести в отдельную функцию (принимающую границы цикла) и дважды её вызвать, то, наверное, понизит. Но помню определения. И условия не нужны.

Но компилятор скорее всего развернет функции в два цикла.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070382
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

если идти до конца - цикл не нужен
Код: plaintext
1.
printf("285.6\n");
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070391
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилзамена цикла на условие - понизит сложность?
Да, т.к. уменьшит количество букв, что в результате улучшит читаемость кода.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070415
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tчто в результате улучшит читаемость кода.
а на мой взгляд условие - ухудшает читаемость. Что делать то будем?
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070432
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилDima Tчто в результате улучшит читаемость кода.
а на мой взгляд условие - ухудшает читаемость. Что делать то будем?
Два цикла усложняют сопровождение. Удваивается вероятность накосячить при правке тела цикла.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070441
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИзопропилпропущено...

а на мой взгляд условие - ухудшает читаемость. Что делать то будем?
Два цикла усложняют сопровождение. Удваивается вероятность накосячить при правке тела цикла.
Так перенеси тело цикла в отдельную фyнкцию. И будет один цикл.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070479
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цикл один, условий нет. Цикломатическая сложность увеличилась или уменьшилась?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
void Loop( double &a_sum, int start, int finish )
{
    for (int x = start; x <= finish; ++x)
    {
        double y = (log((x*x + 1.0) / (x*x - 1))) + 1.2*x;
        a_sum += abs(y);
    }
}

void CalculateNew()
{
    double sum = 0.0;
    Loop( sum, -15, -2 );
    Loop( sum, 2, 15 );

    printf("New: %f\n", sum);
}
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070499
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХУ с условием лучше читается, в таком коде не очевидно что так нельзя писать:
Код: plaintext
1.
Loop( sum, -15, 0 );
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070533
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Нам нужно как можно компактнее написать проверку что целочисленные интервалы [-1, +1] и [start, stop] пересекаются, тогда бросаем исключение.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void Loop( double &a_sum, int start, int finish )
{
    if ( start <= 0 && 0 <= finish )
    {
        throw std::range_error("WTF&");
    }

    for (int x = start; x <= finish; ++x)
    {
        double y = (log((x*x + 1.0) / (x*x - 1))) + 1.2*x;
        a_sum += abs(y);
    }
}
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070684
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысл тут исключения городить? Надо только на 1 и -1 проверить чтобы (x*x-1) нулем не оказалось
Полистал топик, ты уже оказывается писал с условием в одном цикле.
petrav
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    sum = 0;
    for (x=-15; x<=15; x++)
    {
    	if ( abs(x) != 1 )
    	{
            y=(log((x*x+1)/(x*x-1)))+1.2*x;
    	}
        l=abs(y);
        sum=sum+l;
    }
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070922
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
start/finish можно перевернуть через min/max.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39071341
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TСмысл тут исключения городить? Надо только на 1 и -1 проверить чтобы (x*x-1) нулем не оказалось
Полистал топик, ты уже оказывается писал с условием в одном цикле.
Вам, господа, не угодишь. Первый хочет одним циклом, другой хочет производительности, третий цикломатической сложностью интересуется, остальным нужна: ясность с точки зрения математической логики, отсутствие дублирования кода, очевидность использования аргументов или приятность кода на собственный вкус (и цвет).

А студен уже лабу сдал с двумя циклами…

Dima Tpetrav
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    sum = 0;
    for (x=-15; x<=15; x++)
    {
    	if ( abs(x) != 1 )
    	{
            y=(log((x*x+1)/(x*x-1)))+1.2*x;
    	}
        l=abs(y);
        sum=sum+l;
    }


И это было не совсем верно. Там еще на x==0 нужно было проверять. Студент жаловались.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39071347
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav, "третий" не интересуется индексами сложности. Он просто спинным мозгом чует лишний цикл.
Достаточно было увидеть "зеркальные" параметры итерации. К слову я точно не знаю формулу по которой
расчитывается вес и влияние алгоритмических блоков. Да это и не надо в данном случае.

Просто глаз набит.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39071353
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonpetrav, "третий" не интересуется индексами сложности. Он просто спинным мозгом чует лишний цикл.
Достаточно было увидеть "зеркальные" параметры итерации. К слову я точно не знаю формулу по которой
расчитывается вес и влияние алгоритмических блоков. Да это и не надо в данном случае.

Просто глаз набит.
:) Ну у SashaMercury было еще и дублирование кода в обоих циклах, а не только зеркальные параметры цикла. Но я надеялся, что ты по науке оценишь сложность разных вариантов. Как там: один условный оператор добавляет единицу к сложности, цикл еще одну. Или как-то так.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39071358
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Деление на 0 мы кст. в универе обходили через обработку signals в "C".
В некоторых лабах где нужно было рисовать графики это было весьма и весьма
полезно. Особенно когда формула вводилась в runtime.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39071400
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Два цикла по причине производительности, не хочу проверять на каждой итерации принадлежность интервалу [-1,1] (в точке 0 значение функции считать нельзя также, недостаточно проверки только -1 и 1)
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с циклом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]