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

Из Java в c++ - C++

Восстановить пароль Регистрация
 
RennarD
0 / 0 / 0
Регистрация: 17.01.2012
Сообщений: 12
23.02.2013, 21:57     Из Java в c++ #1
Может кто-то перекодить прогу с Java на с++?

Java
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package equations;
 
import java.util.ArrayList;
 
public class Equations {
 
    public static double fi(double x) {
        return (3 + 1.1 * Math.cos(x / 5)) / (15 * Math.sqrt(1 + Math.cos(x / 3))) - 1;
    }
 
    public static double f(double x) {
        return (15 * (x + 1) * Math.sqrt(x + Math.cos(x / 3))) - (1.1 * Math.cos(x / 5)) - 3;
    }
    
 
    public static void main(String[] args) {
        ArrayList<Double> epsilon = new ArrayList<>();
        double q = 0.0037;
        double c = -0.8999;
        
        double m1 = 21.03;
        int counter;
        epsilon.add(new Double(0.01));
        for (int i = 1; i <= 4; i++) {
            epsilon.add(epsilon.get(i - 1) * 0.001);
        }
        double x = -0.76;
        System.out.println("Iter method");
        for (Double d : epsilon) {
            System.out.println(d);
        }
 
        System.out.println("");
        for (Double eps : epsilon) {
            counter = 0;
            x = -0.76;
            while (fi(fi(x)) - fi(x) > ((1 - q) / q) * eps) {
                counter++;
                x = fi(x);
            }
            System.out.println(eps + " : " + x + " : " + (fi(fi(x)) - fi(x)) + " : " + counter);
        }
 
        System.out.println("Hord method");
        x = -0.76;
        for (Double eps : epsilon) {
            counter = 0;
            x = -0.76;
            while (Math.abs(f(x)) / m1 > eps.doubleValue()) {
                counter++;
                x = x - (f(x) / (f(x) - f(c))) * (x - c);
            }
            System.out.println(eps + " : " + x + " : " + (Math.abs(f(x)) / m1) + " : " + counter);
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2013, 21:57     Из Java в c++
Посмотрите здесь:

C++ Из Java в C++
C++ c java на с++
C++ C++ или Java
C++ java ----> C++
C++ С++ и java
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.02.2013, 10:45     Из Java в c++ #2
А Вы знаете сами Java или C++, чтобы понять преобразования или просто хотите готовый результат без объяснения что к чему?
RennarD
0 / 0 / 0
Регистрация: 17.01.2012
Сообщений: 12
24.02.2013, 19:20  [ТС]     Из Java в c++ #3
C++ я еще разберу как начинающий,а вот java сложнее,ибо до вчера с ним не сталкивался.
БОльшая часть программы в принципе понятна и в оригинале,но некоторые нюансы пропущены. Хотелось бы код именно на сипипи.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
24.02.2013, 19:39     Из Java в c++ #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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <cmath>
#include <iostream>
#include <vector>
 
 
double fi(double x) {
    return (3 + 1.1 * std::cos(x / 5)) / (15 * std::sqrt(1 + std::cos(x / 3))) - 1;
}
 
double f(double x) {
    return (15 * (x + 1) * std::sqrt(x + std::cos(x / 3))) - (1.1 * std::cos(x / 5)) - 3;
}
 
 
int main() {
    std::vector<double> epsilon;
    double q = 0.0037;
    double c = -0.8999;
 
    double m1 = 21.03;
    int counter;
    epsilon.push_back(0.01);
    for (int i = 1; i <= 4; i++) {
        epsilon.push_back(epsilon[i - 1] * 0.001);
    }
    double x = -0.76;
    std::cout << "Iter method" << std::endl;
    for (double d : epsilon) {
        std::cout << d << std::endl;
    }
 
    std::cout << std::endl;
    for (double eps : epsilon) {
        counter = 0;
        x = -0.76;
        while (fi(fi(x)) - fi(x) > ((1 - q) / q) * eps) {
            counter++;
            x = fi(x);
        }
        std::cout << eps << " : " << x << " : " << fi(fi(x)) - fi(x) << " : " << counter << std::endl;
    }
 
    std::cout << "Hord method" << std::endl;
    x = -0.76;
    for (double eps : epsilon) {
        counter = 0;
        x = -0.76;
        while (std::abs(f(x)) / m1 > eps) {
            counter++;
            x = x - (f(x) / (f(x) - f(c))) * (x - c);
        }
        std::cout << eps << " : " << x << " : " << std::abs(f(x)) / m1 << " : " << counter << std::endl;
    }
}
RennarD
0 / 0 / 0
Регистрация: 17.01.2012
Сообщений: 12
25.02.2013, 00:57  [ТС]     Из Java в c++ #5
Я дурак или это никак не скомпилится в сипипи?)
C++
1
  for (double eps : epsilon)
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
25.02.2013, 01:15     Из Java в c++ #6
Цитата Сообщение от RennarD Посмотреть сообщение
Я дурак или это никак не скомпилится в сипипи?)
range-based for loop.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2013, 02:25     Из Java в c++
Еще ссылки по теме:

С++ и Java C++
C++ из Java в С++
C++ c++ и java

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

Или воспользуйтесь поиском по форуму:
iifat
2179 / 1332 / 96
Регистрация: 05.06.2011
Сообщений: 3,690
25.02.2013, 02:25     Из Java в c++ #7
Это ж Цэ++11. Таки не совсем ещё Цэ, имхо.
Yandex
Объявления
25.02.2013, 02:25     Из Java в c++
Ответ Создать тему
Опции темы

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