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

Перевести из Java на C++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Странный код в лабе (динам. масиивы) http://www.cyberforum.ru/cpp-beginners/thread842187.html
Разве там не должен быть выход за пределы выделенной области? class Action : public MyArr { int *ptrnew; //float *fptrnew; int index; public: Action(int how_mh, int init);
C++ Debug(отображение кириллицы в консоли) проходим прогу дебаг,выводим свое имя,выводится на английском,какая програ будет выводить на русском,помогите пожалуйста) http://www.cyberforum.ru/cpp-beginners/thread842185.html
C++ ДП(Черепашка)
вырезано #include <cstdlib> #include <iostream> #include <algorithm> using namespace std; int a; int ans; int main(int argc, char *argv) { int m,n,i,j;
C++ rand() генерирует 1 или 0
Доброго времени суток! Помогите, пожалуйста, нужно представить rand() так, что бы она выводила только значения 1 или 0. Можете на каком-то простеньком примере показать? Спасибо.
C++ Семестровая работа - дописать код http://www.cyberforum.ru/cpp-beginners/thread842181.html
В универе семестровую дали.. Неделю решаем с подругой.. Все не работает.. И до конца не дописана.. Посмотрите, может найдете ошибки.. Завтра в 13ч уже сдавать ее надо.. Вы наша последняя надежда..) #include <iostream> #include <fstream> #include <string.h> #include <locale.h> using namespace std; struct tNumbers
C++ В классе перегрузить операцию сложения Здравствуйте. Помогите кто сможет. Задание, нужно создать два прямоугольника, рисовать их не нужно, только создать ихние позоции (координаты x и y), так же ширину и высоту. Перегрузкой операции сложения, создать третий прямоугольник (его пизицию, ширину и высоту), позицией которого должна быть левая верхняя точка(приоритетнее точка которая левее), ширину и высоту, как я понял, нужно рассчитать... подробнее

Показать сообщение отдельно
Мега Ксю
 Аватар для Мега Ксю
3 / 3 / 0
Регистрация: 02.03.2013
Сообщений: 56
19.04.2013, 01:23     Перевести из Java на C++
Всем доброй ночи! Я уже разок обращалась за помощью на этот форум, и сейчас, набравшись немножко наглости, хочу обратиться ещё раз
Есть программа на 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.sql.SQLOutput;
import java.util.Scanner;
 
public class Solution {
    private static double q = 1.6;
    private static double eps0 = 8.85;
    private static double eps = 13;
    private static double nd = 1;
    private static double d = 2;
    private static double phi0 = 0.8;
    private static double k = 8.62 * Math.pow(10, -5);
    private static double T = 293;
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        computeEilerWithVolumeCharge(n) ;
 
        double[] phiEiler = computeEilerSimple(n);
        double[] phiEilerVolumeCharge = computeEilerWithVolumeCharge(n);
        try {
            OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("KMP_compare.txt"));
            boolean flag = false;
            double h = d / n;
            for (int i = 0; i < phiEiler.length; i++) {
                writer.write(h * i + " " + phiEiler[i] + " " + phiEilerVolumeCharge[i] + "\n");
            }
            writer.close();
        } catch (IOException exc) {
            exc.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }
 
    private static double[] computeEilerSimple(int n) {
        double h = d / n;
        double[] e = new double[n];
        double[] phi = new double[n];
        double v = 2 * q * nd * phi0 * 10;
        e[0] = -Math.pow((v / (eps * eps0)), 0.5) * 10;
        phi[0] = -phi0;
 
        for (int i = 1; i < phi.length; i++) {
            double temp = h * (q * nd / (eps * eps0)) * 1000;
            e[i] = e[i - 1] + temp;
            phi[i] = phi[i - 1] - h * (e[i]);
        }
 
        try {
            OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("KMP_eiler_simple.txt"));
            boolean flag = false;
            for (int i = 0; i < phi.length; i++) {
                writer.write(h * i + " " + phi[i] + "\n");
            }
            writer.close();
        } catch (IOException exc) {
            exc.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        return phi;
    }
 
    private static double[] computeRungeKuttSimple(int n) {
        double h = d / n;
        double[] e = new double[n + 1];
        double[] phi = new double[n];
        e[0] = -Math.pow(((2 * q * nd * phi0 * 10) / (eps * eps0)), 0.5) * 10;
        phi[0] = -phi0;
 
        // Если пересчитать формулу Рунге-Кутта для простого случая - получим тоже, что и в Эйлере
        for (int i = 1; i < e.length; i++) {
            double temp = h * (q * nd / (eps * eps0)) * 1000;
            e[i] = e[i - 1] + temp;
        }
 
        for (int i = 1; i < phi.length; i++) {
            double k0 = e[i];
            double k1 = (e[i] + e[i + 1]) / 2;
            double k2 = (e[i] + e[i + 1]) / 2;
            double k3 = (e[i + 1]);
 
            phi[i] = phi[i - 1] - (h * (k0 + 2 * k1 + 2 * k2 + k3)) / 6;
 
        }
 
        try {
            OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("KMP_runge_kutt_simple.txt"));
            boolean flag = false;
            for (int i = 0; i < phi.length; i++) {
                writer.write(h * i + " " + phi[i] + "\n");
            }
            writer.close();
        } catch (IOException exc) {
            exc.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        return phi;
    }
 
    private static double[] computeEilerWithVolumeCharge(int n) {
        double[] phiStarted = computeEilerSimple(n);
        double h = d / n;
        double[] e = new double[n];
        double[] phi = new double[n];
        double v = 2 * q * nd * phi0 * 10;
        e[0] = -Math.pow((v / (eps * eps0)), 0.5) * 9.9;
        phi[0] = -phi0;
        for (int j = 0; j < 3; j++) {
            for (int i = 1; i < phi.length; i++) {
                double a = q * phiStarted[i - 1] / (k * T);
                double v1 = 1 - Math.exp(a);
                double temp = h * (q * nd * v1 / (eps * eps0)) * 1000;
                e[i] = e[i - 1] + temp;
                phi[i] = phi[i - 1] - h * (e[i]);
            }
            phiStarted = phi;
        }
        try {
            OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("KMP_eiler_with_volume_charge.txt"));
            boolean flag = false;
            for (int i = 0; i < phi.length; i++) {
                writer.write(h * i + " " + phi[i] + "\n");
                if(phi[i] >=0){
                    System.out.println("Phi > 0, phi equals "+ phi[i]);
                }
            }
            writer.close();
        } catch (IOException exc) {
            exc.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        return phi;
    }
}


и я её хочу перевести на C++.. Вот что я напереводила..
Кликните здесь для просмотра всего текста
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#include <iostream>
#include <vector>
#include <fstream>
 
#define q 1.6;
#define eps0 8.85;
#define eps 13;
#define nd 1;
#define d 2;
#define phi0 0.8;
#define k 0.0000862
#define t 293;
 
template <class T> inline static std::vector<T> computeEilerSimple(T N); /** метод Эйлера */
template <class T> inline static std::vector<T> computeEilerWithVolumeCharge(T N); /** метод Эйлера с объемным зарядом */
template <class T> inline static std::vector<T> computeRungeKuttSimple(T N); /** метод Рунге-Кутта */
template <class T> inline static T pow(T base, unsigned n);
template <class T> inline static T exp(T base);
 
int main(int argc, char const **argv)
{
  int N;
  std::cout << "N -> ";
  std::cin >> N;
 
  computeEilerWithVolumeCharge(N) ;
  
  std::vector<float> phiEiler = computeEilerSimple(N);
  std::vector<float> phiEilerVolumeCharge = computeEilerWithVolumeCharge(N);
 
  std::ofstream outputFile("KMP compare.txt");
  std::ofstream outFile("Eiler simple.txt");
  if(!outFile.is_open())
    std::cout << "File open error:( Please, check that file's path is accessible" << std::endl;
  else
    for (int i = 0; i < phiEiler.length; i++)
      outputFile << h * i << " " << phiEiler.at(i) << " " << phiEilerVolumeCharge.at(i) + "\n");
  return 0;
}
 
template <class T>
inline std::vector<T> computeEilerSimple(T N)
{
  T h = d / N;
  T v = 2 * q * nd * phi0 * 10;
  
  std::vector<T> e(N);
  std::vector<T> phi(N);
 
  std::vector<T>::iterator it;
  
  e.at(0) = pow((v / (eps * eps0)), 0.5 * 10;
  phi.at(0) = -phi0;
 
  for (int i = 1; i < phi.size(); i++) 
  {
    T temp = h * (q * nd / (eps * eps0)) * 1000;
    e.at(i) = e.at(i - 1) + temp;
    phi.at(i) = phi.at(i - 1) - h * (e.at(i));
  }
 
  std::ofstream outFile("Eiler simple.txt");
  if(!outFile.is_open())
    std::cout << "File open error:( Please, check that file's path is accessible" << std::endl;
  else
  {
    for(int i = 0; i < phi.size(); i++)
      outFile << h * i << " -> " << phi.at(i) << "\n";
  }
  outFile.close();
 
  return phi;
}
 
template <class T>
inline std::vector<T> computeEilerWithVolumeCharge(T N)
{
  std::vector<T> phiStarted = computeEilerSimple(N);
  T h = d / n;
  std::vector<T> e(N);
  std::vector<T> phi(N);
  T v = 2 * q * nd * phi0 * 10;
  e.at(0) = pow((v / (eps * eps0)), 0.5) * 9.9;
  phi.at(0) = -phi0;
  
  for (int j = 0; j < 3; j++) 
  {
    for (int i = 1; i < phi.size(); i++) 
    {
      T v1 = 1 - exp(q * phiStarted.at(i - 1) / (k * T));
      T temp = h * (q * nd * v1 / (eps * eps0)) * 1000;
      e.at(i) = e.at(i - 1) + temp;
      phi.at(i) = phi.at(i - 1) - h * (e.at(i));
    }
    phiStarted = phi;
  }
 
  std::ofstream outFile("Eiler With Volume Charge.txt");
  if(!outFile.is_open())
    std::cout << "File open error:( Please, check that file's path is accessible" << std::endl;
  else
  {
    for (int i = 0; i < phi.size(); i++) 
    {
      outFile << h * i << " -> " << phi.at(i) << "\n";
      if(phi.at(i) >=0)
        std::cout << "Phi > 0, phi equals " + phi.at(i);
    }
  }
  outFile.close();  
    
  return phi;
}
 
template <class T>
inline std::vector<T> computeRungeKuttSimple(T N)
{
  T h = d / n;
  std::vector<T> e(N + 1);
  std::vector<T> phi(N);
  
  e.at(0) = -pow(((2 * q * nd * phi0 * 10) / (eps * eps0)), 0.5) * 10;
  phi.at(0) = -phi0;
 
  for (int i = 1; i < e.size(); i++) 
    e.at(i) = e.at(i - 1) + (h * (q * nd / (eps * eps0)) * 1000);
 
  for (int i = 1; i < phi.size(); i++) 
  {
    T k0 = e.at(i);
    T k1 = (e.at(i) + e.at(i + 1)) / 2.0;
    T k2 = (e.at(i) + e.at(i + 1)) / 2.0;
    T k3 = (e.at(i + 1)]);
 
    phi.at(i) = phi.at(i - 1) - (h * (k0 + 2.0 * k1 + 2.0 * k2 + k3)) / 6.0;
  }
 
  std::ofstream outFile("Eiler simple.txt");
  if(!outFile.is_open())
    std::cout << "File open error:( Please, check that file's path is accessible" << std::endl;
  else
  {
    for(int i = 0; i < phi.size(); i++)
      outFile << h * i << " -> " << phi.at(i) << "\n";
  }
  outFile.close();
  
  return phi;
}
 
template <class T>
inline static T pow(T base, unsigned n)
{    
  T result;
  for (result = 1; n != 0; result *= base, n--);
  return result;
}
 
template <class T> 
inline static T exp(T x)
{
  T s = 1, next = 1, n = 0;
  do
  {
    ++n;
    next = (next * x) / n;
    s += next;
  }
  while (next < 0.0000001);
  return s;
}


конечно понимаю, мой код ужасен и безобразен, но тем не менее вопрос: как заставить его работать? Как понимаю ошибка у меня в синтаксисе, т.к. компилятор ругается на такие штучки: такую < и такую >

Вот ругательства компилятора..
Кликните здесь для просмотра всего текста
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Users\Ksu\Dropbox\Лабораторные работы\КМП>g++ Solution.cpp
Solution.cpp: В функции <int main(int, const char**)>:
Solution.cpp:28:53: ошибка: запрошено преобразование от <std::vector<int, std::allocator<int> >> к нескалярном
у типу <std::vector<float>>
Solution.cpp:29:75: ошибка: запрошено преобразование от <std::vector<int, std::allocator<int> >> к нескалярном
у типу <std::vector<float>>
Solution.cpp:36:34: ошибка: <class std::vector<float>> has no member named <length>
Solution.cpp:37:21: ошибка: нет декларации <h> в этой области видимости
Solution.cpp:37:91: ошибка: invalid operands of types <float> and <const char [2]> to binary <operator+>
Solution.cpp:37:95: ошибка: expected <;> before <)> token
Solution.cpp: В функции <std::vector<T> computeEilerSimple(T)>:
Solution.cpp:44:11: ошибка: expected primary-expression before </> token
Solution.cpp:45:17: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:45:22: ошибка: invalid type argument of unary <*> (have <double>)
Solution.cpp:45:29: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:50:3: ошибка: need <typename> before <std::vector<T>::iterator> because <std::vector<T>> is a dep
endent scope
Solution.cpp:50:28: ошибка: expected <;> before <it>
Solution.cpp:52:23: ошибка: expected <)> before <;> token
Solution.cpp:52:23: ошибка: expected <)> before <;> token
Solution.cpp:52:23: ошибка: expected <)> before <;> token
Solution.cpp:52:29: ошибка: invalid type argument of unary <*> (have <double>)
Solution.cpp:52:33: ошибка: expected primary-expression before <)> token
Solution.cpp:52:33: ошибка: expected <;> before <)> token
Solution.cpp:57:19: ошибка: expected <)> before <;> token
Solution.cpp:57:23: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:57:26: ошибка: expected primary-expression before </> token
Solution.cpp:57:29: ошибка: expected <)> before <;> token
Solution.cpp:57:35: ошибка: invalid type argument of unary <*> (have <double>)
Solution.cpp:57:39: ошибка: expected primary-expression before <)> token
Solution.cpp:57:39: ошибка: expected <;> before <)> token
Solution.cpp: В функции <std::vector<T> computeEilerWithVolumeCharge(T)>:
Solution.cpp:79:11: ошибка: expected primary-expression before </> token
Solution.cpp:79:13: ошибка: нет декларации <n> в этой области видимости
Solution.cpp:82:17: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:82:22: ошибка: invalid type argument of unary <*> (have <double>)
Solution.cpp:82:29: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:83:23: ошибка: expected <)> before <;> token
Solution.cpp:83:23: ошибка: expected <)> before <;> token
Solution.cpp:83:23: ошибка: expected <)> before <;> token
Solution.cpp:83:29: ошибка: invalid type argument of unary <*> (have <double>)
Solution.cpp:83:33: ошибка: expected primary-expression before <)> token
Solution.cpp:83:33: ошибка: expected <;> before <)> token
Solution.cpp:90:22: ошибка: expected <)> before <;> token
Solution.cpp:90:55: ошибка: expected primary-expression before <)> token
Solution.cpp:90:56: ошибка: expected <;> before <)> token
Solution.cpp:91:21: ошибка: expected <)> before <;> token
Solution.cpp:91:25: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:91:36: ошибка: expected <)> before <;> token
Solution.cpp:91:42: ошибка: invalid type argument of unary <*> (have <double>)
Solution.cpp:91:46: ошибка: expected primary-expression before <)> token
Solution.cpp:91:46: ошибка: expected <;> before <)> token
Solution.cpp: В функции <std::vector<T> computeRungeKuttSimple(T)>:
Solution.cpp:118:11: ошибка: expected primary-expression before </> token
Solution.cpp:118:13: ошибка: нет декларации <n> в этой области видимости
Solution.cpp:122:24: ошибка: expected <)> before <;> token
Solution.cpp:122:24: ошибка: expected <)> before <;> token
Solution.cpp:122:24: ошибка: expected <)> before <;> token
Solution.cpp:122:28: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:122:33: ошибка: invalid type argument of unary <*> (have <double>)
Solution.cpp:122:40: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:122:42: ошибка: expected <;> before <)> token
Solution.cpp:122:53: ошибка: invalid type argument of unary <*> (have <double>)
Solution.cpp:122:57: ошибка: expected primary-expression before <)> token
Solution.cpp:122:57: ошибка: expected <;> before <)> token
Solution.cpp:126:35: ошибка: expected <)> before <;> token
Solution.cpp:126:35: ошибка: expected <)> before <;> token
Solution.cpp:126:39: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:126:42: ошибка: expected primary-expression before </> token
Solution.cpp:126:45: ошибка: expected <)> before <;> token
Solution.cpp:126:51: ошибка: invalid type argument of unary <*> (have <double>)
Solution.cpp:126:55: ошибка: expected primary-expression before <)> token
Solution.cpp:126:55: ошибка: expected <;> before <)> token
Solution.cpp:133:24: ошибка: expected <)> before <]> token
Solution.cpp: В функции <std::vector<T> computeEilerWithVolumeCharge(T) [with T = int]>:
Solution.cpp:26:33: instantiated from here
Solution.cpp:90:24: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp:91:28: ошибка: invalid type argument of unary <*> (have <int>)
Solution.cpp: В функции <std::vector<T> computeEilerSimple(T) [with T = int]>:
Solution.cpp:28:53: instantiated from here
Solution.cpp:50:3: ошибка: dependent-name <std::vector<T>::iterator> is parsed as a non-type, but instantiatio
n yields a type
Solution.cpp:50:3: замечание: задайте <typename std::vector<T>::iterator>, если подразумевается тип

C:\Users\Ksu\Dropbox\Лабораторные работы\КМП>


Очень надеюсь на вашу помощь...

P.S. Конечно выглядит ужасно, но я пыталась использовать шаблоны.. (это я так написала, чтобы было понятно, что вообще я пыталась сделать)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru