救助java代码转c++

RK_MG_YS 2017-05-10 10:00:13





public abstract class Model {

// z=(x,v)

public static double[][] update(double[][] positionvelocity, double h,
Vehicle[] vehicleArray) {

int numbervehicles = Controller.n_veh;

double[][] positionvelocitynew = new double[positionvelocity.length][2];
// speichert auf [i][0]-Positionen und auf [i][1]-Geschwindigkeit
double k1;
double k2;
double k3;
double k4;
double w1;
double w2;
double w3;
double w4;
double[] temp;

for (int i = 0; i < numbervehicles - 1; i++) {

temp = f(positionvelocity[i][0], positionvelocity[i][1],
positionvelocity[i + 1][0], positionvelocity[i + 1][1],
vehicleArray[i]);
k1 = h * temp[0];
w1 = h * temp[1];

temp = f(positionvelocity[i][0], positionvelocity[i][1] + w1 / 2,
positionvelocity[i + 1][0], positionvelocity[i + 1][1],
vehicleArray[i]);
k2 = h * (temp[0] + w1 / 2);
w2 = h * temp[1];

temp = f(positionvelocity[i][0], positionvelocity[i][1] + w2 / 2,
positionvelocity[i + 1][0], positionvelocity[i + 1][1],
vehicleArray[i]);
k3 = h * (temp[0] + w2 / 2);
w3 = h * temp[1];

temp = f(positionvelocity[i][0], positionvelocity[i][1] + w3,
positionvelocity[i + 1][0], positionvelocity[i + 1][1],
vehicleArray[i]);
k4 = h * (temp[0] + w3);
w4 = h * temp[1];

positionvelocitynew[i][0] = positionvelocity[i][0] + k1 / 6 + k2
/ 3 + k3 / 3 + k4 / 6;
positionvelocitynew[i][1] = positionvelocity[i][1] + w1 / 6 + w2
/ 3 + w3 / 3 + w4 / 6;

// Teste ob Auto recht herausf鋒rt:

if (positionvelocitynew[i][0] > (Controller.winwidth + vehicleArray[i]
.getlength())) {
positionvelocitynew[i][0] = positionvelocitynew[i][0]
- Controller.winwidth;
}

// Teste ob Auto r點kw鋜ts f鋒rt
if (positionvelocitynew[i][1] < 0) {
positionvelocitynew[i][1] = 0;
}

}

temp = f(positionvelocity[numbervehicles - 1][0],
positionvelocity[numbervehicles - 1][1],
positionvelocity[0][0], positionvelocity[0][1],
vehicleArray[numbervehicles - 1]);
k1 = h * temp[0];
w1 = h * temp[1];

temp = f(positionvelocity[numbervehicles - 1][0],
positionvelocity[numbervehicles - 1][1] + w1 / 2,
positionvelocity[0][0], positionvelocity[0][1],
vehicleArray[numbervehicles - 1]);
k2 = h * (temp[0] + w1 / 2);
w2 = h * temp[1];

temp = f(positionvelocity[numbervehicles - 1][0],
positionvelocity[numbervehicles - 1][1] + w2 / 2,
positionvelocity[0][0], positionvelocity[0][1],
vehicleArray[numbervehicles - 1]);
k3 = h * (temp[0] + w2 / 2);
w3 = h * temp[1];

temp = f(positionvelocity[numbervehicles - 1][0],
positionvelocity[numbervehicles - 1][1] + w3,
positionvelocity[0][0], positionvelocity[0][1],
vehicleArray[numbervehicles - 1]);
k4 = h * (temp[0] + w3);
w4 = h * temp[1];

positionvelocitynew[numbervehicles - 1][0] = positionvelocity[numbervehicles - 1][0]
+ k1 / 6 + k2 / 3 + k3 / 3 + k4 / 6;
positionvelocitynew[numbervehicles - 1][1] = positionvelocity[numbervehicles - 1][1]
+ w1 / 6 + w2 / 3 + w3 / 3 + w4 / 6;

// Test ob Auto recht herausf鋒rt
if (positionvelocitynew[numbervehicles - 1][0] > (Controller.winwidth + vehicleArray[numbervehicles - 1]
.getlength())) {
positionvelocitynew[numbervehicles - 1][0] = positionvelocitynew[numbervehicles - 1][0]
- Controller.winwidth;
}

// Teste ob Auto r點kw鋜ts f鋒rt
if (positionvelocitynew[numbervehicles - 1][1] < 0) {
positionvelocitynew[numbervehicles - 1][1] = 0;
}

return positionvelocitynew;

}

public static double[] f(double x1, double v1, double x2, double v2,
Vehicle auto) {

double a;
double b;
double T;
double s_ref;
double v_ref;
double length;
double delta;
double deltav;
double salpha;
double sfunk;

a = auto.geta();
b = auto.getb();
T = auto.getdt();
s_ref = auto.gets_ref();
length = auto.getlength();
v_ref = auto.getv_ref();
delta = auto.getdelta();

deltav = v1 - v2;
salpha = x2 - length - x1;

// Falls diese Auto am rechten Rand ist
if (salpha < 0) {
salpha = x2 - length + Controller.winwidth - x1;
}

sfunk = (s_ref + v1 * T + v1 * deltav) / (2 * Math.sqrt(a * b));

double[] result = {
v1,
a
* (1 - Math.pow(v1 / v_ref, delta) - Math.pow(sfunk
/ salpha, 2)) };

return result;
}

}


求助大佬帮帮忙,把这段java代码改成c++,或者抓重点说一下,感激不尽
...全文
537 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
RK_MG_YS 2017-05-12
  • 打赏
  • 举报
回复
引用 2楼幻夢之葉 的回复:
public abstract class Model -------> class Model { public: } double[][] positionvelocit -------> double positionvelocit[][] or double** positionvelocit double[][] positionvelocitynew = new double[positionvelocity.length][2]; -------> double *positionvelocitynew = new double[positionvelocity.length]; for(int i = 0; i < positionvelocity.length; i++) { positionvelocitynew[i] = new double[2]; } 这里总的来说区别在于数组形式有些差别,C++ 动态多维数组,其实就是指针的指针的……,new的东西,需要delete销毁 函数不可以返回数组 还有就算帮你改完这里也没有用,你这里面还用到好多其他类,所以还得把其他的所有类都修改一遍。 你真要改就学学C++语法,或者花钱叫人改
谢谢,谢谢
赵4老师 2017-05-11
  • 打赏
  • 举报
回复
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 可以将临时文件放在RamDisk上提高效率减少磨损磁盘。 数据的结构很复杂的话,文本文件的格式问题可参考json或xml 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸!
幻夢之葉 2017-05-11
  • 打赏
  • 举报
回复
public abstract class Model -------> class Model { public: } double[][] positionvelocit -------> double positionvelocit[][] or double** positionvelocit double[][] positionvelocitynew = new double[positionvelocity.length][2]; -------> double *positionvelocitynew = new double[positionvelocity.length]; for(int i = 0; i < positionvelocity.length; i++) { positionvelocitynew[i] = new double[2]; } 这里总的来说区别在于数组形式有些差别,C++ 动态多维数组,其实就是指针的指针的……,new的东西,需要delete销毁 函数不可以返回数组 还有就算帮你改完这里也没有用,你这里面还用到好多其他类,所以还得把其他的所有类都修改一遍。 你真要改就学学C++语法,或者花钱叫人改
程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。   程序(港台称之为程式) program(me)或procedure   chéng xù   概念1.:为进行某活动或过程所规定的途径。   概念2.程序是由序列组成的,告诉计算机如何完成一个具体的任务。由于现在的计算机还不能理解人类的自然语言,所以还不能用自然语言编写计算机程序。   指示计算机按解决问题的步骤   实现预期目的而进行操作的一系列语句和指令。一般分为系统程序和应用程序两大类。 计算机中的程序在港澳台地区称为程式。程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合。由程序计数器(Program Counter)控制。程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。是用汇编语言、高级语言等开发编制出来的可以运行的文件,在计算机中称可执行文件(后缀名一般为.exe)。我们玩的游戏一般都是应用程序(但现在后缀名为.swf的Flash影片类的游戏也比较流行)   常见的编程语言   * .NET   * ActionScript   * APL、A+和J   * Ada   * 汇编语言   * AWK   * Basic   o QBasic   o Visual Basic   * VBScript   * Brainfuck   * C、C++   o Objective-C   * Clipper   * COBOL   * dBase   * PASCAL、Delphi   * Forth   * Fortran   * FoxPro   * F#   * Fava   * IDL   * Java   * JavaScript   * J#   * LISP   * Lua   * LOGO   * Modula   * Nuva   * Perl   * PHP   * PL/I   * Prolog   * Python   * R   * Ruby   * Scheme   * Smalltalk   * Tcl/Tk   * Visual FoxPro   怎样成为一名程序员   第一阶段:掌握一种编程语言   学习内容:学习任意一种主流的编程语言。例如C++语言。   学习目标:熟练掌握一种语言的语法和基本的编程技巧。   学习时间:3个月左右   注意事项:编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等。程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指 Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器 ,在内的集成化、可视化的软件开发工具。C++源程序可以在Visual C++ 6.0里编写,也可以在记事本里编写,而同一个C++源程序可以用Visual C++ 6.0编译、执行,也可以用C++ Builder 5.0编译、执行,所以: C++ 不等于 Visual C++ 6.0 。   第二阶段:掌握一种编程工具   学习内容:学习任意一种主流的编程工具。注意编程工具要和第一阶段学习的编程语   言一致,例如你学习的编程语言是C++,那么编程工具要选Visual C++ 6.0、C++ Builder 5.0。   学习目标:熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。   学习时间:3个月左右   注意事项:这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。   第三阶段:掌握“算法与数据结构”这门课程   学习内容:算法与数据结构,推荐许卓群的《数据结构》,高等教育出版社出版。   学习目标:熟练掌握各种常用的算法与数据结构   学习时间:4个月左右   注意事项:这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,这说明了数据结构和算法的重要性。它能帮我们建立良好的程序分析与设计能力。   第四阶段:实现一个模拟的小型软件项目   学习内容:软件项目的开发过程   学习目标:掌握软件项目的基本开发过程和方法   学习时间:4个月左右   注意事项:自己完成一个模拟的小型软件项目,强烈推荐做一个MIS(管理信息系统)软件,参考用书推荐:   1、“中小型信息管理系统开发实例系列丛书”,人民邮电出版社,它的例子详实有效。   2、 以它为基础再加以扩展,就可以做出实用的MIS软件来。   3、此丛书包括多种开发工具,大家可以选择适合自己的:《VISUAL FOXPRO6.0 数据库系统开发实例导航》   4、《JAVA数据库系统开发实例导航》 《VISUAL BASIC数据库系统开发实例导航》。   5、《VISUAL C++6.0数据库系统开发实例导航》 《ASP.NET数据库管理系统开发实例导航》   6、《DELPHI数据库系统开发实例导航》 《POWERBUILDER 8.0数据库系统开发实例导航》。 [编辑本段]社会上办事程序的定义 工作程序|按程序进行。   程序,是现在最吃香的提法。   [1]任何单位任何事情,首先强调的就是程序,因为管理界有句名言:细节决定成败。程序就是整治细节最好的工具。于是,现在我们的所有工作,无时无处不在强调程序。 因为有了规范的办事程序,现在我们这些平民百姓到政府机关办事比原来容易了许多,最起码知道办什么事该找哪个部门,知道办这个事应该用多长时间了。政府公开办事程序,也拉近了和人民群众的关系。好,这是好得很的事。 好像是为了印证事物都是一分为二的道理一样,在赞颂程序的同时,我们也看到了程序冷酷的另一面。南宁见义勇为的英雄鲍光蛇在医院冷酷的程序中流尽了最后一滴血,公路收费站的值班人员因救护车交不出十元钱的过路费而坚决不放行救护车,终于使急需救助的患者丧命,……等等的例子,都为我们强调或者说奉为神圣规则的程序优先勾画出了它的原形。   程序,是管理方式的一种,是能够发挥出协调高效作用的工具,在我们的社会主义建设事业或者说现代化建设中,应该充分重视它的作用,应该不断地将我们的工作从无序整改到有序。   可是,当我们只关注形式而不关注实质的时候,有些事情就发展到了它的反面。程序不是医治百病的灵丹妙药,在它走向反面的时候,它是使那些官僚主义者和视劳苦大众利益如不见的人们推脱掉自己应当承担的责任的最好的挡箭牌。因为越是严密完善的程序,按部就班执行起来越是要付出时间的代价,当时间被浪费了时候,因此引发的其他损失是不应该由模范执行了程序的人来负责的。 [编辑本段]程序的运行   为了一个程序运行,计算机加载程序代码,可能还要加载数据,从而初始化成一个开始状态,然后调用某种启动机制。在最低层上,这些是由一个引导序列开始的。   在大多数计算机中,操作系统例如视窗等,加载并且执行很多程序。在这种情况下,一个计算机程序是指一个单独的可执行的映射,而不是当前在这个计算机上运行的全部程序。

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧