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

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

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

Arrays to vectors - C++

26.11.2014, 13:56. Просмотров 199. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 13:56     Arrays to vectors
Посмотрите здесь:

Java SE 2d arrays
Java arrays минимум найти
Java SE Класс Arrays
Pointers and dynamic arrays C++
Arrays.toString(); Java
Arrays. Calculate the number of items greater than 5 C++
C++ Arrays, как работает данная программа?
Java SE Arrays.sort()
Задача Arrays PascalABC.NET
PascalABC.NET Задача Arrays
Ошибка ? Nonscalar arrays of function handles are not allowed; use cell arrays instead Matlab
Quick sort using vectors C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
16 / 16 / 6
Регистрация: 16.06.2014
Сообщений: 174
26.11.2014, 14:35  [ТС]     Arrays to vectors #3
ForEveR, спасибо, я сначала использовал цикл while потом переписал на do while. Вот поэтому не заметил ошибку с инкрементом. Только что сделал этот же пример без массивов и к удивлению нашел что там всего 5 итераций. Вот оказывается почему)) эх...
Вопрос еще актуален. Как же все таки реализовать с использованием vector ??
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
26.11.2014, 15:16     Arrays to vectors #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Ответ Создать тему
Опции темы

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