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

Элемент массива в цикле

20.05.2017, 08:25. Показов 540. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Есть массив arr_x = { 2, 5, 7} и массив arr_c = {4, -0.4, 0.2}.
Первый массив заполняется вручную, второй по расчетам.
Нужно получить массив y = { 4, 7, 11}
Это должен выполнить следующий цикл
C++
1
2
3
4
5
6
7
double y = arr_c[size];
    for( int i = size - 1; i >= 0; i-- )
    {
    
     y = arr_c[i] + y*arr_x[i-1];
        cout << "y= " << y << endl;
    }
Но выводит он совсем другие числа.
Если посчитать только первый элемент массива y вот так
C++
1
2
3
for( int i = size - 1; i >= 0; i-- )
     y = arr_c[i] + y*arr_x[i-1];
        cout << "y= " << y << endl;
То выведет он y = 4, то есть первый элемент посчитан правильно, ошибка в первом цикле, что берется элемент массива arr_x равный i - 1, я уже всю голову сломал, чтобы элементы массива arr_x брались с первого по последний, а не брались от условия цикла
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2017, 08:25
Ответы с готовыми решениями:

Не вызывается нужный элемент массива по значению управляющей переменной в цикле for
Вот часть кода : for(int i=0; i &lt; 5; i++){ cout &lt;&lt; &quot;Этот объект &quot; &lt;&lt; shapes-&gt;getName() &lt;&lt;...

Пропустить элемент массива в цикле foreach по условию
Как это реализовать? Помоггите срочно...

Вывести в цикле каждый четвертый элемент массива
Доброго времени суток!!! Как при выводе массива в foreach() или for() вывести каждый четвертый...

В цикле по выданному числу выводить на экран соответствующий элемент массива
Сформировать строку из букв русского алфавита от А до П. Сформировать массив 3х5, в элементы...

9
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
20.05.2017, 08:50 2
C++
1
size - 1 - i
0
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 9
20.05.2017, 09:03  [ТС] 3
C++
1
2
3
4
5
6
for( int i = size - 1; i >= 0; i-- )
    {
    
     y = arr_c[i] + y*arr_x[size - 1 - i];
        cout << "y= " << y << endl;
    }
Все равно не правильно выводит
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
20.05.2017, 09:10 4
На примере тех чисел объясни как должно быть.
0
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 9
20.05.2017, 09:16  [ТС] 5
Вот это цикл составляет вот такое уравнение исходя из значений arr_c, получается y = 0.2*x*x - 0.4*x +4.
C++
1
2
for( int i = size - 1; i >= 0; i-- )
     y = arr_c[i] + y*arr_x[i-1];
Вместо икса подставляются значение массива arr_x.
Вот это цикл должен вывести
C++
1
2
3
4
5
6
for( int i = size - 1; i >= 0; i-- )
    {
    
     y = arr_c[i] + y*arr_x[Нужно начинать с первого элемента, потом второй и так до конца];
        cout << "y= " << y << endl;
    }
y = 4
y = 7
y = 11
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
20.05.2017, 11:33 6
Т. е. arr_x - это x в разных степенях, что ли? Тогда почему 2,5,7? И зачем y вычисляется через себя?
0
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 9
20.05.2017, 11:55  [ТС] 7
Имеем три точки функции со значениями x и y.
Пример: (2,4),(5,7),(7,11)
После интерполяции точек получаем интерполяционную функцию
f(x) = c0 + c1*x+c2*x*x
Где c0,c1,c2 записываются в массив arr_c
По этому примеру получаем функцию
f(x) = 0.2*x*x - 0.4*x +4
Это все работает верно.
Для этой функции мне нужно построить график, т.е. пропустить иксы через эту функцию, которая задается циклом
C++
1
2
3
4
5
double y = arr_c[size];
    for( int i = size - 1; i >= 0; i-- ) // size - кол-во точек
    {
       y = arr_c[i] + y*arr_x[Нужно начинать с первого элемента, потом второй и так до конца];
    }
Так вот, у меня иксы пропускаются не с первого, а вообще непонятно какие, я не знаю, что поставить здесь
Кликните здесь для просмотра всего текста
[Нужно начинать с первого элемента, потом второй и так до конца]
, чтобы начиналось с первого элемента.
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
20.05.2017, 12:13 8
Если size = 3, то с (size - 1 - i) будет в обратном порядке:
C++
1
2
3
arr_c[2] + y*arr_x[0]
arr_c[1] + y*arr_x[1]
arr_c[0] + y*arr_x[2]
0
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 9
20.05.2017, 12:19  [ТС] 9
Если бы все было так легко, точек может быть сколько угодно, не через if ( size = 1) , if ( size = 2) ... мне делать?
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
20.05.2017, 14:13 10
Цикл же в общем виде записывается. Всё от size зависит.
0
20.05.2017, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2017, 14:13
Помогаю со студенческими работами здесь

Найти максимальный элемент массива . Поменять столбец, содержащий этот элемент с последним столбцом двумерного массива
Ввести двумерный массив размером 3*4. Найти максимальный элемент массива . Поменять столбец,...

Найти средний по величине элемент в множестве элементов массива, в которое входит каждый третий элемент массива
Есть массив из 100 рандомных элементов Нужно найти средний по величине элемент в множестве...

Пoследний отрицательный элемент массива, модуль которого больше заданной величины, умножить на первый элемент массива
Задание: Пoследний отрицательный элемент массива,модуль которого больше заданной величины,умножить...

Определить максимальный элемент массива и его порядковый номер; записать этот элемент в конец массива
1.Сформировать элементы массива (одномерного) с помощью счетчика случайных чисел . На лист Excel...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru