不幸的是,周末没有教练帮助我完成这项任务,而且我被困住了。我正在学习C ++,而且我已经参加了编程的逻辑和设计课程,但就像我说我对C ++很新。我很难赶上其他学生。
我想是否有人可以列出改进,并且可能会澄清我是否与分配声明相比做错了。我非常感谢你的帮助!
我的代码是重复的,我确信我可以采用另一种方式显示数组值而不需要所有代码。使用应用程序后会弹出错误:
"运行时检查失败#2 - 围绕变量'敌人'已经腐败了。
如果存在此异常的处理程序,则可以安全地继续该程序。"
作业是:
"创建一个Battleship结构,其中包含5个一维整数坐标,表示其在某个区域(任意大小)内的位置。实例化结构的2个副本,并让用户为每个战舰输入单个坐标。设计您的代码以获取此单个坐标并使用它来填充每艘船的剩余4个坐标。对两个船舶结构都这样做。然后,让您的代码根据各自的坐标计算两艘船之间的数字距离。最后,使用英语句子向用户显示结果距离。"
我现在的代码是:
#include <iostream>
#include <string>
using namespace std;
struct Ship
{
int x[5];
int y[5];
};
int main()
{
Ship good;
Ship enemy;
good.x[0] = 0;
enemy.y[0] = 0;
cout << "Enter a coordinate (out of 100) for good ship: "<< endl;
cin >> good.x[0];
good.x[1] = good.x[0] + 1;
good.x[2] = good.x[1] + 1;
good.x[3] = good.x[2] + 1;
good.x[4] = good.x[3] + 1;
cout << "Good ship coordinates:" << endl;
cout << good.x[0]<< "*" << endl;
cout << good.x[1]<< endl;
cout << good.x[2]<< endl;
cout << good.x[3]<< endl;
cout << good.x[4]<< endl;
cout << "Enter a coordinate (out of 100) for enemy ship: "<< endl;
cin >> enemy.y[0];
enemy.y[1] = enemy.y[0] + 1;
enemy.y[2] = enemy.y[1] + 1;
enemy.y[3] = enemy.y[2] + 1;
enemy.y[4] = enemy.y[3] + 1;
cout << "enemy ship coordinates:" << endl;
cout << enemy.y[0]<< "*" << endl;
cout << enemy.y[1]<< endl;
cout << enemy.y[2]<< endl;
cout << enemy.y[3]<< endl;
cout << enemy.y[4]<< endl;
int distance=0;
distance = good.x[1] - enemy.y[1];
cout << "The distance between good ship and enemy ship is: " << distance << endl;
system("pause");
return 0;
}
答案 0 :(得分:5)
错误可能来自每个结构中只有4个坐标,而不是5.当您使用int x[4];
声明数组时,它只有4个元素,即x[0]
到x[3]
还有许多其他问题:
两艘船不需要两个结构。只使用一个。这是结构/类的重点:表示对象类。仅使用一个结构(例如Ship
命名),并声明您的船只good
和enemy
具有该类型。
不要害怕敌舰和有x
坐标的好船。编译器和计算机不会混淆,你也不应该。
学习使用循环。即使您最初感到困惑,请记住,循环是程序员处理中最重要的工具之一(如果不是 最重要的)。想想如果你有100艘船只会有100个坐标会发生什么......
再次请记住,数组的第一个元素位于索引0,不是索引1 。 (最后一个元素是索引N-1。)
计算距离比你写的要复杂一点。两个物体之间的距离是否负?如果敌舰的坐标大于友方船,会发生什么?一维距离的实际公式是什么?
删除未使用的代码。这个region
变量的用途是什么?你有没有在任何地方使用它?
更新:(对于将来阅读的人,请记住,OP已更新并修改了他们的问题和代码,以至于我的某些观点不适用或将采用不同的方式。)< / p>
x
中的y
和Ship
?答案 1 :(得分:0)
不确定使用系统(&#34; PAUSE&#34;)是否是教师讲授的内容,但这也是你可以改进的东西。 Explained here
答案 2 :(得分:0)
首先从
开始创建一个Battleship结构,其中包含5个一维整数坐标,表示其在某个区域(任意大小)内的位置。实例化结构的2个副本,让用户为每个战舰输入单个坐标
您需要一个结构:
err
现在制作2份
struct Ship
{
int x[5];
};
然后其余的看起来很好,它在我的计算机上编译并运行没有任何问题。您可以添加一个函数来填充船只以减少代码数量
int main()
{
Ship good;
Ship bad;
...
然后您还可以创建一个打印船舶位置的模拟函数