С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Kris_Tulko
1 / 1 / 0
Регистрация: 02.09.2013
Сообщений: 108

Не выходит из цикла while()

26.09.2015, 00:09. Показов 707. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Программа, которая решает систему диффуров методом Эйлера. Если задать очень малый шаг и количество итераций увеличится, то программа зацикливается.

Я закомментировала

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
MySystem::MySystem(double hParam)
{
 
    h = hParam;
    TimeInPixl = 13/975.0;
    StepsNumber = floor(13./h);
    
    SizeMass = 500000;
    x1mass = new double [SizeMass];
    x2mass = new double [SizeMass];
    x3mass = new double [SizeMass];
    x4mass = new double [SizeMass];
    x5mass = new double [SizeMass];
    tx = new double [SizeMass];
    x1mass[0]=1;
    x2mass[0]=1;
    x3mass[0]=0;
    x4mass[0]=0;
    x5mass[0]=0;
    tx[0]=0;
}
 
 
 
void MySystem::Euler(void){
    double count = 1.0, x1new, x2new, x3new, x4new, x5new, x1 = 1, x2 = 1, x3 = 0, x4 = 0, x5 = 0, t = 0, tt = 0;
    
    Ind = 1;
    // первый элемент массива уже заполнен
    
 
    do {
        t = t + h; tt = tt + h;
 
    
        //x1
        if (fabs(x2-x1)<=0.5)
            x1new = x1 + (x2 - x1)*h;
        else{
            if((x2-x1)>0)
                x1new = x1+ 0.5*h;
            else
                x1new = x1- 0.5*h;
                    }
        //x2
        x2new = x2 + x3*h;
        //x3
        x3new = x3 + (6*x1 - 6*x2 - x3 + 10*x4)*h;
        //x4 
        x4new = x4 + (-100*x4 - 11* x2 - 2* x3 + 150*((10000 - x5)/(25000-400*t)))*h;
 
        //x5
        x5new = x5 + h*400*sin(x1);
 
    
        if (tt >= 0.01) {           
            tx[Ind] = t;
            x1mass[Ind] = x1new;
            x2mass[Ind] = x2new;
            x3mass[Ind] = x3new;
            x4mass[Ind] = x4new;
            x5mass[Ind] = x5new;
            tt = 0;
            Ind ++;
        }
 
 
    
 
        x1 = x1new;
        x2 = x2new;
        x3 = x3new;
        x4 = x4new;
        x5 = x5new;
        count = count+ 1;
 
    }while(t<13 && count < StepsNumber );
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.09.2015, 00:09
Ответы с готовыми решениями:

Не выходит из цикла while
почему при нажатии (-1) не выходит из цикла? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;locale&gt; #include...

Не выходит из цикла
Хотел написать простой код для считывания введенный в консоль через пробел чисел в вектор, но что-то пошло не так: читать читает, заносит,...

Не выходит из цикла
//Добавляем шкаф, берем его айди, прописываем его в магистарльные и распределительные боксы, добавляем магистральные боксы, дальше -&gt; ...

7
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
26.09.2015, 00:15
Kris_Tulko, здравствуйте.
Не искал ошибку,но предлагаю вам отказаться от while в пользу for и от динамических массивов в пользу управляемых,контейнеров STL или классов коллекций .Net.
1
 Аватар для Kris_Tulko
1 / 1 / 0
Регистрация: 02.09.2013
Сообщений: 108
26.09.2015, 00:32  [ТС]
Вот он сам:/
Вложения
Тип файла: rar First.rar (2.56 Мб, 9 просмотров)
0
 Аватар для Kris_Tulko
1 / 1 / 0
Регистрация: 02.09.2013
Сообщений: 108
26.09.2015, 01:05  [ТС]
от динамических массивов в пользу управляемых
Я создала класс не управляемый, а обычный, а почему, уже не помню:/Но кажется, сначала управляемый был.. Его удалила

Добавлено через 30 минут
C++
1
2
for (double k = 0; k<StepsNumber; k++){
}
Так тоже висит..
А итераций с данным шагом там выходит 433333333
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
26.09.2015, 01:05
Kris_Tulko, обычный так обычный.
В таком случае лучше использовать std::array<> или std::vector<>.

У меня ваш проект не запустился,да и разбираться в нем ради одной ошибки смысла нет.

Цитата Сообщение от Kris_Tulko Посмотреть сообщение
Если задать очень малый шаг и количество итераций увеличится, то программа зацикливается.
Кстати,если вы задаете очень малый шаг,то это вполне нормально что программа медленно проводит расчеты.
Воспользуйтесь отладчиком или обычным выводом в консоль и посмотрите так ли это.
1
 Аватар для Kris_Tulko
1 / 1 / 0
Регистрация: 02.09.2013
Сообщений: 108
26.09.2015, 02:03  [ТС]
Вроде вышел.. Но это минут 10:/
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
26.09.2015, 02:07
Kris_Tulko, точность проще повышать сменой метода,чем дроблением шага.
Зачем вам такой шаг?
0
 Аватар для Kris_Tulko
1 / 1 / 0
Регистрация: 02.09.2013
Сообщений: 108
26.09.2015, 02:50  [ТС]
S_el, по заданию должен быть этот метод..
Ещё потом будет анализ того, с каким шагом достигается нужная точность) Он будет этот шаг дробить, если погрешность относительная больше 1%)

Добавлено через 4 минуты
По заданию любой - сколь угодно малый - шаг
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2015, 02:50
Помогаю со студенческими работами здесь

Не выходит из цикла
не понимаю почему при значениях c,t,p,g не выходит из цикла. После ввода значения проверочное выражение получает false и дальше идет...

Не выходит из цикла
После того, как вводятся 9 значений двумерного массива (матрицы), почему-то программа вместо последующего &quot;123&quot; выдает...

Не выходит из цикла
Всем привет, изучаю Java, а конкретно циклы, решил написать такую штуку: package cycle; import java.util.Scanner; public class Test {...

Не выходит из цикла
Доброго времени суток! При нажатии цифры &quot;1&quot;, а затем последовательно &quot;2&quot; z должно суммировать результат кейсов и выводить программу из...

Не выходит из цикла
#include&lt;iostream&gt; using namespace std; float Pow(float x, int k); int main() { float x, sum = 0, y = 1, eps = 0.1; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru