Форум программистов, компьютерный форум CyberForum.ru

Не получается создать правильный цикл - C++

Восстановить пароль Регистрация
 
Pavel Rem
 Аватар для Pavel Rem
11 / 11 / 0
Регистрация: 15.07.2016
Сообщений: 48
04.09.2016, 23:30     Не получается создать правильный цикл #1
Нужен цикл который будет выполнять это:
C++
1
2
3
4
5
6
//1. Итерация
G[1] = M[K - 3][K - 1] - (G[0] * M[K - 3][K - 2]);
//2. Итерация
G[2] = M[K - 4][K - 1] - ((G[0] * M[K - 4][K - 2]) + (G[1] * M[K - 4][K - 3]));
//3. Итерация
G[3] = M[K - 5][K - 1] - ((G[0] * M[K - 5][K - 2]) + (G[1] * M[K - 5][K - 3]) + (G[2] * M[K - 5][K - 4]));
Количество итераций должно иметь возможность меняться не нарушая логику.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2016, 23:30     Не получается создать правильный цикл
Посмотрите здесь:

C++ Не получается создать поток
C++ Линейный список не получается создать
создать цикл C++
C++ Правильный ли цикл
Необходимо добавить цикл поиска главного элемента по столбцу. никак не получается C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ghost Writter
 Аватар для Ghost Writter
35 / 35 / 9
Регистрация: 09.12.2015
Сообщений: 188
05.09.2016, 00:51     Не получается создать правильный цикл #2
Pavel Rem, через рекурсию попробуй

https://code-live.ru/post/cpp-recurs...l-calculating/

Или можно сделать так:

M[K - 3][K - 1], M[K - 4][K - 1] и M[K - 5][K - 1] - это константы у тебя. Их вынесем за цикл.

Тогда в цикле останется:

i = 1 (G[0] * M[K - 3][K - 2]) (один элемент суммы)
i = 2 ((G[0] * M[K - 4][K - 2]) + (G[1] * M[K - 4][K - 3])) (два элемента суммы)
i = 3 три элемента суммы

Отсюда значит, что нужно найди формулу i-го элемента суммы. Получается:

G[i] * M[K - (количество элементов суммы + 2)][K - (i + 2)] (закономерность здесь достаточно просто найти)

Цикл в итоге:

Цикл i = 0, пока i < (количество элементов суммы), i++
Сумма += G[i] * M[K - (количество элементов суммы + 2)][K - (i + 2)];
Цикл конец;

После цикла отнимаешь сумму от константы.

Например:

G[2] = M[K - 4][K - 1] - сумма, где сумма:

первый элемент: G[0] * M[K - (2 + 2)][K - (0 + 2)] = G[0] * M[K - 4][K - 2]
второй элемент: G[1] * M[K - (2 + 2)][K - (1 + 2)] = G[1] * M[K - 4][K - 3]

Выражение получается: G[2] = M[K - 4][K - 1] - G[0] * M[K - 4][K - 2] + G[1] * M[K - 4][K - 3]

П.с. за псевдокод извиняюсь. Здесь я дилетант.
Pavel Rem
 Аватар для Pavel Rem
11 / 11 / 0
Регистрация: 15.07.2016
Сообщений: 48
05.09.2016, 01:25  [ТС]     Не получается создать правильный цикл #3
Что то не получается. Где то ошибка, найти не могу(.
Попробую более подробно объяснить задачу. Глобальная задача - код решающий системы уравнений методом Гауса.
Мой код систему уравнений (к примеру) -
x2+y7+z3=25;
x4+y8+z2=12;
x5+y1+z7=5;
приводит к виду -
x1+y3+z2=5;
y1+z3=2;
z2=4;
Теперь можно вычислить z, зная z можно вычислить y, зная y и z можно вычислить x.
x=z/2;
y=2-3z;
z=5-2z-3y;
Для такого примера достаточно после основного вычислительного цикла написать 3 действия которые найдут x,y,z, но! код по заданию должен быть универсальным. К примеру если неизвестных будет не 3 а 4 или 5 или 6... то соответственно и уравнений будет больше, и для нахождения всех переменных нужно больше действий. Действия хоть и похожи но разные.
Если написать таких линейных действий на все случаи - преподаватель меня зарежет).
Вот эти действия и нужно свести к циклу.
Ghost Writter
 Аватар для Ghost Writter
35 / 35 / 9
Регистрация: 09.12.2015
Сообщений: 188
05.09.2016, 13:15     Не получается создать правильный цикл #4
Pavel Rem, лучше всего найди примеры на туториалах, а алгоритмы в книгах. На с++ в связи с учебой не практиковался уже больше чем пол года. Помочь мало с чем могу.
Yandex
Объявления
05.09.2016, 13:15     Не получается создать правильный цикл
Ответ Создать тему
Опции темы

Текущее время: 03:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru