powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с циклом
43 сообщений из 43, показаны все 2 страниц
Помогите с циклом
    #39067530
beginer_zt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
for (x=-15; x<=15; c++) {
  y=log((x*x+1)/(x*x-1))+1.2*x;
  l=abs(y);
  sum=sum+l;
} 



в чем ошибка, он не работает
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067533
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное x++
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067534
beginer_zt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
изменил и опять ошибка
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067539
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты прикалываешся исходник маленькими порциями показывать?
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067540
beginer_zt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
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.
#include <iostream>
using namespace std;
int main () 
{
int a=7,b=2,c,min,d,f,x;
double y,sum,l;

cout <<"a+b = "<<a+b<<endl;
cout <<"a-b = "<<a-b<<endl;
cout <<"a/b = "<<a/b<<endl;
cout <<"a*b = "<<a*b<<endl;
cout <<"a%b = "<<a%b<<endl;
cout <<"++a = "<<++a<<endl;
cout <<"b-- = "<<--b<<endl;
cout <<"a<<b = "<<a<<b<<endl;
c=a>>b;
cout <<"a>>b = "<<c<<endl;
min=(7<2)? 2:7;
cout <<"7>2? = "<<min<<endl;
d=a<<=b;
cout <<"a<<=b = "<<d<<endl;
f=b>>=a;
cout <<"b>>=a = "<<f<<endl;
cout <<"sizeof( int ) = "<<sizeof( int )<<endl;


for (x=-15; x<=15; x++) {
y=(log((x*x+1)/(x*x-1)))+1.2*x;
l=abs(y);
sum=sum+l;
}

cout <<"sum=  "<<sum<<endl;
return 0;
}
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067541
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginer_zt,

Тебе же подсказывает Студия. Переменная `sum` не иницализрованна. Напиши перед циклом:
Код: plaintext
1.
sum = 0;
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067543
beginer_zt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
та же херня , не помогло
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067546
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginer_zt, мне кажется в топике мы воюем не с твоим исходником а с твоим неумением пользовать отладчик.

Знаешь что. Оставь вообще режим отладки. Просто выполни своё чертово приложение и покажи лог компилляции
и лог output.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067548
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginer_zt,
во-первых, пользуйся тегом SRC. Читать же невозможно.

Во-вторых, читай сообщения студии. Он тебе там черным по-русски пишет error C2668.

Ты вообще заголовочные файлы для логарифма поключал?
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067550
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginer_ztfor (x=-15; x<=15; x++) {
y=(log((x*x+1)/(x*x-1)))+1.2*x;
l=abs(y);
sum=sum+l;
}

cout <<"sum= "<<sum<<endl;
return 0;
}
Когда у тебя в в цикле x становится равным -1, то ты делишь на ноль. Получаешь бесконечность (INF double). В какую степень нужно возвести е что бы получить бесконечность?
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067555
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginer_ztfor (x=-15; x<=15; x++) {
y=(log((x*x+1)/(x*x-1)))+1.2*x;
l=abs(y);
sum=sum+l;
}

cout <<"sum= "<<sum<<endl;
return 0;
}
*ля, *ля, *ля!!! В подчеркнутой строчке sum не увеличивается на единицу, а к sum прибавляется неинициализированная переменная L, но написанная в нижнем регистре. Пипец. И еще и ideone.com тупит и тормозит. Шок.

Так вроде работает, но смысла я не понимаю:
Код: plaintext
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.
#include <iostream>
#include <cmath>

using namespace std;

int main () 
{
    int a=7,b=2,c,min,d,f,x;
    double y,sum,l=1;

    cout <<"a+b = "<<a+b<<endl;
    cout <<"a-b = "<<a-b<<endl;
    cout <<"a/b = "<<a/b<<endl;
    cout <<"a*b = "<<a*b<<endl;
    cout <<"a%b = "<<a%b<<endl;
    cout <<"++a = "<<++a<<endl;
    cout <<"b-- = "<<--b<<endl;
    cout <<"a<<b = "<<a<<b<<endl;
    c=a>>b;
    cout <<"a>>b = "<<c<<endl;
    min=(7<2)? 2:7;
    cout <<"7>2? = "<<min<<endl;
    d=a<<=b;
    cout <<"a<<=b = "<<d<<endl;
    f=b>>=a;
    cout <<"b>>=a = "<<f<<endl;
    cout <<"sizeof( int ) = "<<sizeof( int )<<endl;


    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;
    }

    cout <<"sum= "<<sum<<endl;
    
    return 0;
}
...
Рейтинг: 0 / 0
Помогите с циклом
    #39067626
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А потом подобные экземпляры будут в форуме "Работа" плакаться, что их зажимают и вообще зарплата только на еду.

До чего довел планету этот фигляр ПЖ!
...
Рейтинг: 0 / 0
Помогите с циклом
    #39068972
beginer_zt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
та же херня , не помогло
...
Рейтинг: 0 / 0
Помогите с циклом
    #39068975
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginer_zt,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include <stdio.h>
#include <math.h>

int main()
{
	float sum = 0.0;
	for (int x = 2; x <= 15; x++) {
		float y = (log((x*x + 1.0) / (x*x - 1))) + 1.2*x;
		sum  += abs(y);
	}
	sum *= 2;
	printf("%f\n", sum);
	return 0;
}
...
Рейтинг: 0 / 0
Помогите с циклом
    #39068976
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не заметил 1,2x, и подумал что функция чётная. Тогда так.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#include <stdio.h>
#include <math.h>

int main()
{
	float sum = 0.0;
	for (int x = -15; x <= -2; x++) {
		float y = (log((x*x + 1.0) / (x*x - 1))) + 1.2*x;
		sum += abs(y);
	}
	for (int x = 2; x <= 15; x++) {
		float y = (log((x*x + 1.0) / (x*x - 1))) + 1.2*x;
		sum += abs(y);
	}
	printf("%f\n", sum);
	return 0;
}
...
Рейтинг: 0 / 0
Помогите с циклом
    #39069573
beginer_zt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SashaMercury, огромное спасибо, действительно помог и все работает) благодарю
...
Рейтинг: 0 / 0
Помогите с циклом
    #39069671
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginer_ztSashaMercury, огромное спасибо, действительно помог и все работает) благодарю

Помог студенту по программированию -- уронил спутник!
...
Рейтинг: 0 / 0
Помогите с циклом
    #39069810
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А одним циклом мона?
...
Рейтинг: 0 / 0
Помогите с циклом
    #39069815
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beginer_ztта же херня , не помогло
Это потому что у вашего цикла три неприятные точки:

x==-1. Получаем под логарифмом бесконечность.
x==0. Получаем под логарифмом отрицательное значение. А для них логарифм не определён.
x==+1. Получаем под логарифмом бесконечность.

Вот вторую точку я упустил (давно в институте учился, да и компилятора под рукой не было). Потом заметил, но исправлять себя уже было лень, сорри. :(
...
Рейтинг: 0 / 0
Помогите с циклом
    #39069827
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА одним циклом мона?
нуно!

SashaMercury, не позорься, перепиши в один.
...
Рейтинг: 0 / 0
Помогите с циклом
    #39069842
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonА одним циклом мона?
нуно!

SashaMercury, не позорься, перепиши в один.
Да ладно. Зачем обижаешь. Подумает еще что тут все злые и сговорились против него
...
Рейтинг: 0 / 0
Помогите с циклом
    #39069849
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonА одним циклом мона?
нуно!

SashaMercury, не позорься, перепиши в один.
а в два цикла весьма вероятно считать будет быстрее
...
Рейтинг: 0 / 0
Помогите с циклом
    #39069851
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДа ладно. Зачем обижаешь. Подумает еще что тут все злые и сговорились против него
Я думаю что он под двоечников косит, пишет криво чтоб те не спалились при сдаче
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070106
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for ТС: Стив Макконнелл - Совершенный код
если применять советы от туда, цикл будет работать всегда как часы :)
...
Рейтинг: 0 / 0
Помогите с циклом
    #39070287
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилDima Tпропущено...

нуно!

SashaMercury, не позорься, перепиши в один.
а в два цикла весьма вероятно считать будет быстрее
Я не имел в виду скорость вообще когда предлагал сократить циклы.
Я думал о Cyclomatic Complexity.
...
Рейтинг: 0 / 0
Помогите с циклом
    #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
43 сообщений из 43, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с циклом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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