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

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

26.09.2015, 00:09. Показов 722. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru