Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
4unkur
16 / 16 / 6
Регистрация: 16.06.2014
Сообщений: 176
#1

Arrays to vectors - C++

26.11.2014, 13:56. Просмотров 231. Ответов 4
Метки нет (Все метки)

Реализовал метод Ньютона таким образом
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
#include <iostream>
#include <iomanip>
#include <cmath>
 
 
using namespace std;
 
double f(double x) {
    
    return ( sqrt (2 - x*x) - exp (x) );
}
 
double fdx(double x) {
    
    return ( -x / sqrt (2 - x*x) - exp(x) );
}
 
int main () {
 
    const double e = 1e-12;
 
    long double x[1000];
    
    x[0] = 0.3;
    
    int i = 1;
    
    do {
        
        x[i] = (x[i-1] - f(x[i-1]) / fdx(x[i-1]));
 
        ++i;
    } while (fabs (x[i] - x[i-1]) > e);
    
    cout << i << endl;
    cout << setprecision(20) << x[i-1] << endl;
    
    
    return 0;
}
Не могу сделать тоже самое с векторами:

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
#include <iostream>
#include <iomanip>
#include <cmath>
#include <vector>
 
using namespace std;
 
double f(double x) {
    
    return ( sqrt (2 - x*x) - exp (x) );
}
 
double fdx(double x) {
    
    return ( -x / sqrt (2 - x*x) - exp(x) );
}
 
int main () {
 
    const double e = 1e-12;
 
    vector<double> x;
    x.push_back (0.3);
    int i = 1;
 
    do {
        
        x.push_back (x[i-1] - f(x[i-1]) / fdx(x[i-1]));
        cout << i << endl;
        ++i;
    } while (fabs (x[i] - x[i-1]) > e);
    
    cout << i << endl;
    cout << setprecision(20) << x[i-1] << endl;
    
    
    return 0;
}
Знаю что можно было вобще без массивов обойтись, но все же, где ошибка? Программа не выходит из цикла. И да, я плохо знаком с vector
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 13:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Arrays to vectors (C++):

Quick sort using vectors - C++
Now that you have learned about three sorting algorithms with quadratic time complexity (Bubble, (./selection) and Insertion sorts) you...

Pointers and dynamic arrays - C++
Изучаю тему указатели и динамичесские массивы в классах. Хотелось бы быть уверенным в следующих ответах: 1) Когда класс использует...

Arrays, как работает данная программа? - C++
Как работает данная программа?! Как я понимаю должны выйти значения от 0 к 4.Как здесь удалось int result += foo #include &lt;iostream&gt; ...

Arrays. Calculate the number of items greater than 5 - C++
народ помогите написать программу Write the program code according to the developed algorithm using dynamic arrays, user-defined...

Ошибка ? Nonscalar arrays of function handles are not allowed; use cell arrays instead - Matlab
Вот код: function coeff=kerim_LL(x,L,ydata,w,t,f,step) for n=1:length(step); if step(1,n)+length(L)-1&gt;length(ydata) ...

2d arrays - Java SE
Помогите пожалуйста найти ошибку в следующем коде: public boolean checkIfAscending(int rowNumber, int size) { int count = 0;...

4
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
26.11.2014, 14:05 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
        ++i;
    } while (fabs (x[i] - x[i-1]) > e);
Первый же шаг цикла, после выполнения цикла первый раз i == 2, в векторе же только 2 числа, максимально допустимый индекс 1.

Добавлено через 4 минуты
Алгоритм массива насколько я вижу тоже работает неверно.
В вашем варианте конечный i равен 827, в то время как после исправления на правильный
C++
1
while (fabs(x[i - 1] - x[i - 2]) > e);
i == 5.
1
4unkur
16 / 16 / 6
Регистрация: 16.06.2014
Сообщений: 176
26.11.2014, 14:35  [ТС] #3
ForEveR, спасибо, я сначала использовал цикл while потом переписал на do while. Вот поэтому не заметил ошибку с инкрементом. Только что сделал этот же пример без массивов и к удивлению нашел что там всего 5 итераций. Вот оказывается почему)) эх...
Вопрос еще актуален. Как же все таки реализовать с использованием vector ??
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
26.11.2014, 15:16 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
4unkur, Так же. Исправить условие завершения цикла на корректное. Пробовали, не работает?
1
4unkur
16 / 16 / 6
Регистрация: 16.06.2014
Сообщений: 176
26.11.2014, 15:35  [ТС] #5
ForEveR, Блин. Вот я тупой. Иногда чувствую себя как блондинка
Значит проблема была в моей внимательности, а не в vector.
Мужик спасибо
0
26.11.2014, 15:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2014, 15:35
Привет! Вот еще темы с ответами:

Задача Arrays - PascalABC.NET
Помогите с задачей . Условие : даны числа А и В. Сформировать и вывести целочисленный массив размера N, первый элемент которого равен A,...

Arrays.sort() - Java SE
После сортировки в начале стоят слова с верхним регистром(отсортированные) , потом отсортированные с нижним. Есть ли параметр, который...

Arrays.toString(); - Java
как использовать Arrays.toString(); для двухмерного массива ? int array= new int; jTextArea1.setText(Arrays.toString(array));

Класс Arrays - Java SE
Помогите пожалуйста написать такой код. Увы мои познания языка не дают возможности быстро написать код, а очень надо. Заранее благодарю за...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru