当使用 std::CIN 输入结构时,它会出错
when inputting into a struct with std::cin it bugs out
我想制作一个代码来计算三角形点坐标的三角形面积
当用户输入例如 1 的数字时,它会写入 -1.5458E+037
我尝试了一些小调整,例如使用std::
但根本没有工作
TBH 我是 C++ 的新手,所以我可能没有得到一些东西,我要求彻底解释一些事情
#include<iostream>
#include<math.h>
//#define str string
//using namespace std
int inputStarted=1;//being used in inputCo function
struct cords{
float x;
float y;
};
float distance(cords a,cords b){
float distanceX;
float distanceY;
distanceX= (a.x-b.x)*(a.x-b.x);
distanceY= (a.y-b.y)*(a.y-b.y);
return sqrt(distanceX+distanceY);
}
void area(cords A, cords B, cords C){
float ab =distance(A,B);
float ac =distance(A,C);
float bc =distance(B,C);
float S=(ab+ac+bc)/2;
float Area=sqrt(S*(S-ab)*(S-ac)*(S-bc));
std::cout<<Area;
}
void printCords(cords a){
std::cout<<std::endl<<std::endl<<"x - "<<a.x<<std::endl<<std::endl<<"y - "<<a.y<<std::endl<<std::endl;
}
void inputCo(cords a){
if(inputStarted==1){
std::cout<<"input your 1-st point's X position/coordinate - ";// = 1
std::cin>>a.x;
std::cout<<"input your 1-st point's Y position/coordinate - ";// = 4
std::cin>>a.y;
std::cout<<std::endl;
}
if(inputStarted==2){
std::cout<<"input your 2-nd point's X position/coordinate - ";// = 5
std::cin>>a.x;
std::cout<<"input your 2-nd point's Y position/coordinate - ";// = 8
std::cin>>a.y;
std::cout<<std::endl;
}
if(inputStarted==3){
std::cout<<"input your 3-rd point's X position/coordinate - ";// = 3
std::cin>>a.x;
std::cout<<"input your 3-rd point's Y position/coordinate - ";// = 6
std::cin>>a.y;
std::cout<<std::endl;
}
inputStarted++;
}
int main(){
cords A;
cords B;
cords C;
inputCo(A);
inputCo(B);
inputCo(C);
printCords(A);
printCords(B);
printCords(C);
area(A,B,C);
}```
void inputCo(cords a){
您通过副本传递参数,因此仅修改复制的值。要修改原始值,请改为通过引用传递:
void inputCo(cords& a){
其他函数不会修改参数,因此您可以通过复制传递。
您正在将 coord 的副本传递到被修改的输入函数中,当函数退出时,该副本不再是您正在使用的副本。
您需要传入指针或对坐标的引用,以便可以在不复制的情况下对其进行修改
类似于将输入函数更改为:
void inputCo(cords &a)
相关文章:
- 为什么我在初始化带大括号的结构时出错?
- 尝试将指针与结构一起使用时出错
- PCL 出错:体系结构x86_64 @pcl的未定义符号
- 尝试初始化结构内的联合时出错
- 当使用 std::CIN 输入结构时,它会出错
- 在 boost::heap::p riority_queue 中推送结构对象时出错
- 确定输入"conscalc: calc"的类型时出错。不能联合编码器。具有不同字段集的结构类型
- 尝试将数据添加到结构内部的矢量时出错
- 使用提升库在队列和堆栈数据结构上保存和加载数据时出错
- 尝试将结构指针传递给类时出错
- 在旧的 c++ (<c++11) 中,初始化结构会出错
- 类中私有结构的构造函数出错
- 读取结构数组时出错
- 将模板参数传递到内部结构时出错
- 创建局部结构的 std::向量时出错
- 在 C++ 中访问泛型结构的成员会出错
- 使用映射<字符串,结构>类型的映射编译头文件时出错
- 使用单元测试 (cppunit) 中另一个文件中定义的结构时出错
- 初始化作为结构成员的函数指针时出错
- 使用嵌套结构将结构作为引用传递时出错