Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 9

Вложенные циклы

18.09.2012, 22:14. Показов 1793. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Суть проблемы в следующем: вычисляется функция R[l][w], где внешний цикл по l, внутренний по w. Затем вычисляем функцию Beam[i[k]+=fr[w]*R[l][w]*cos(t*w), здесь i-внешний, k-внутренний. Вот код:

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
T_complex ** calc_reflected_beam ( T_complex *fr, T_complex **R,                        
                                 double fr_begin, double fr_end, double fr_step,    
                                 double f_begin, double f_end, double f_step,  
                                 double l_begin, double l_end, double l_step)
{
    double x, p, nkappa;
    int  i, k, j, n, l;
    int max_NNN_R_BEAM;
 
    max_NNN_R_BEAM = (int) floor ( ( l_end - ( - l_end) ) / l_step)+2;
    T_complex ** R_BEAM;
    R_BEAM = (T_complex **)malloc(max_NNN_R_BEAM * sizeof(T_complex*));
    for(int i=0; i < max_NNN_R_BEAM; i=i++){
    R_BEAM[i] = (T_complex*)malloc(max_NNN_R_BEAM*sizeof(T_complex));
    }
    i = 0;
    n = 0;
    for (nkappa = l_begin; nkappa < l_end; nkappa = nkappa + l_step )
    {
        k=0;
        for (x = f_begin; x < f_end; x = x + f_step)
        {
            R_BEAM[i][k].re = 0;
            R_BEAM[i][k].im = 0;
            j=0;
            l=0;
            for ( p = fr_begin; p < fr_end; p = p + fr_step)
            {
                R_BEAM[i][k].im += (fr[l].re*R[n][j].im * cos ( p * x ) + fr[l].im*R[n][j].re * cos ( p * x ) + fr[l].re*R[n][j].re * sin ( p * x ) - fr[l].im*R[n][j].im * sin ( p * x ))* fr_step/(dsqrt_2_pi);
                R_BEAM[i][k].re += (fr[l].re*R[n][j].re * cos ( p * x ) - fr[l].im*R[n][j].im * cos ( p * x ) - fr[l].re*R[n][j].im * sin ( p * x ) - fr[l].im*R[n][j].re * sin ( p * x ))* fr_step/(dsqrt_2_pi);
                j += 1; 
                l += 1;
            }
            k += 1;
        }
        n += 1;
        i += 1;
    }
    return ( R_BEAM );
}
Функцию R[l][w] не привожу так как там все работает. Но функция представленная выше, реализует как раз Beam[i[k]+=fr[w]*R[l][w]*cos(t*w) не работает: то выход за пределы цикла, то еще чего. Не могу понять в чем дело.
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.09.2012, 22:14
Ответы с готовыми решениями:

вложенные циклы
вывод на экран натуральных чисел лежащих в интервале и делящихся нацело на 5

Вложенные циклы
как вывести на зкран следуюшие 41 42 ... 50 51 52 ... 60 61 62 ... 70 71 72 ... 80 с помошью вложенний цикл... Так...

Вложенные циклы на С++
Здравствуйте, написал код под прогу, но много ошибок. Помогите дописать задачу Вот мои наброски: #include &lt;iostream&gt; ...

6
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,557
18.09.2012, 22:44
Разбей это полотнище на 4-5 функций поменьше. Может быть, тогда станет понятнее. Добрый совет, ничего личного.
1
51 / 49 / 7
Регистрация: 31.10.2011
Сообщений: 98
19.09.2012, 00:26
Присоединяюсь к совету про разбиение на меньшие, логически связанные функции.
Ну и отладчик - лучший помошник в таком случае.
1
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 9
19.09.2012, 00:38  [ТС]
С моим опытом в C++, не получится! Условие задачи найти значения для каждой l - поэтому я реализовал расчет таким способом. А есть ли методы, которые позволяют сохранить алгоритм, при этом разбить расчет на части?
0
51 / 49 / 7
Регистрация: 31.10.2011
Сообщений: 98
19.09.2012, 00:55
Цитата Сообщение от iVeage Посмотреть сообщение
С моим опытом в C++, не получится! Условие задачи найти значения для каждой l - поэтому я реализовал расчет таким способом. А есть ли методы, которые позволяют сохранить алгоритм, при этом разбить расчет на части?
Не уверен, что понял вопрос, но метод предельно прост - вместо одной здоровенной функции пишете несколько маленьких, которые в бывшей здоровенной функции вызываете.
Попробуйте на русском языке рассказать, что должна делать функция - это ее результат и побочные эффекты. Расскажите, как она должна это делать - это те самые маленькие функции.
Например, у вас в начале идёт инициализация переменных, выделение памяти. Внутри цикла вы вычисляете комплексное число по какой-то формуле - это все отличные кандидаты на вынос в отдельные функции. В итоге функция calc_reflected_beam станет вполне читаемой (примерно как англицйский текст, и вам же станет легче разобраться.
0
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 9
19.09.2012, 01:17  [ТС]
Я понял, что необходимо разбить, мне не понятно как. Я исходил из математического смысла, а именно:
два внутренних цикла - это, по сути, интегрирование. Внешний, же, выполняет интегрирование для каждой l.
Алгоритм:
1. внутренний цикл по p - идет пересчет раннее вычисленных значений функций (неупомянутых здесь) для каждого x;
2. цикл по x - здесь идет суммирование и запись в массив по х;
3. цикл по l - пересчет по i и n и запись в массив по i.
Короче, говоря я не представляю как разбить циклы.
0
51 / 49 / 7
Регистрация: 31.10.2011
Сообщений: 98
19.09.2012, 09:51
Может, return должен быть после цикла?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2012, 09:51
Помогаю со студенческими работами здесь

Вложенные циклы
Объясните новичку, в чем разница? Дело в том, что если записывать вложенный цикл в фигурные скобки: for(int d=0; d&lt;y; d++){ ...

Вложенные циклы
for (int i = 1; i &lt; 10; ++i) { for (int j = 1; j &lt;= i; ++j) cout &lt;&lt; &quot;*&quot;; cout &lt;&lt; &quot;\n&quot;; } Имеется такой...

Вложенные циклы
Не совсем понимаю работу вложенных циклов. Объясните пожалуйста следующее. Инструкция myArr=myArr; myArr=min; относится инструкцией...

Вложенные циклы
&quot;Рисование&quot;символами.Символы должны отделяться пробелами.Надо вывести на экран. ____*____ ___***___ __*****__ _*******_ ...

Вложенные циклы
Всем привет. Изучаю С++ совсем недавно - по книге. Собсно вопрос. В главе о циклах в книге приведен пример - использование вложенного...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru