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

Arrays to vectors - C++

Восстановить пароль Регистрация
 
4unkur
 Аватар для 4unkur
16 / 16 / 6
Регистрация: 16.06.2014
Сообщений: 174
26.11.2014, 13:56     Arrays to vectors #1
Реализовал метод Ньютона таким образом
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 13:56     Arrays to vectors
Посмотрите здесь:

Java SE 2d arrays
Проверить допущен ли студент к экзамену C#
Создание динамического многомерного массива C++
Java SE Класс Arrays
Pointers and dynamic arrays C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.11.2014, 14:05     Arrays to vectors #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.
4unkur
 Аватар для 4unkur
16 / 16 / 6
Регистрация: 16.06.2014
Сообщений: 174
26.11.2014, 14:35  [ТС]     Arrays to vectors #3
ForEveR, спасибо, я сначала использовал цикл while потом переписал на do while. Вот поэтому не заметил ошибку с инкрементом. Только что сделал этот же пример без массивов и к удивлению нашел что там всего 5 итераций. Вот оказывается почему)) эх...
Вопрос еще актуален. Как же все таки реализовать с использованием vector ??
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.11.2014, 15:16     Arrays to vectors #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
4unkur, Так же. Исправить условие завершения цикла на корректное. Пробовали, не работает?
4unkur
 Аватар для 4unkur
16 / 16 / 6
Регистрация: 16.06.2014
Сообщений: 174
26.11.2014, 15:35  [ТС]     Arrays to vectors #5
ForEveR, Блин. Вот я тупой. Иногда чувствую себя как блондинка
Значит проблема была в моей внимательности, а не в vector.
Мужик спасибо
Yandex
Объявления
26.11.2014, 15:35     Arrays to vectors
Ответ Создать тему
Опции темы

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