For 循环仅比较数组的第一部分而不是整个数组
For loop only compares the first part of the arrays instead of whole
嗨,我正在制作一个基本的形状库作为学习C++的练习,我正在制作三角形类,并正在制作一个用于检查两个三角形是否全等/相似的函数。但是,用于比较两个三角形的 for 循环仅比较数组的第一个元素。
我对C++很陌生,所以我不知道该尝试什么来解决这个问题。
bool Triangle::checkCongruentWith(Triangle comparee){
float* sides1 = sides;
float* sides2 = comparee.sides;
std::sort(sides1, sides1+3);
std::sort(sides2, sides2+3);
for(int i = 0; i < 3; i++){
std::cout<<sides1[i]<<" "<<sides2[i]<<std::endl;
if(sides1[i]!=sides2[i]){
return false;
}
}
return true;
}
bool Triangle::checkSimilarWith(Triangle comparee){
float* angles1 = angles;
float* angles2 = comparee.angles;
std::sort(angles1, angles1+3);
std::sort(angles2, angles2+3);
for(int i = 0; i < 3; i++){
std::cout<<angles1[i]<<" "<<angles2[i]<<std::endl;
if(angles1[i]!=angles2[i]){
return false;
}
}
return true;
}
此代码中使用的全等测试为:
如果一个三角形的三条边等于另一个三角形的三条边,则三角形全等。
对于类似的三角形是:
如果两个三角形的两个角相等,则三角形相似。[..]当两个角度相等时,所有三个角度都必须相等。
这两个规则都意味着元素的特定排列并不重要,只是当它们包含所有相同的元素时,它们必须相等,无论顺序如何)。即。({3,1,2} == {1,2,3}
.
首先对数组进行排序(std::sort
)只是为了更容易比较(一旦一对边或角不相等,你就知道三角形不能全等/相似),这在行if(angles1[i]!=angles2[i]){ return false;}
中检查。
相关文章:
- 在 MPI 中共享数组的一部分
- 将constexpr字节数组与缓冲区的一部分(指向数据的指针)进行比较
- 需要从字符串数组的一部分访问元素
- 如何在C++中创建 2d 数组,其中一部分包含循环计数器,另一部分包含数字列表?
- 如何反转数组的一部分?
- 如何在数组的一部分中查找特定值的第一个元素
- 如何在C++中比较数组中字符串的一部分的字符串
- 将字符数组的一部分提取为 char*
- 字符数组仅占用字符串的一部分
- 不允许删除数组的一部分,为什么
- 删除动态数组的一部分
- 如何翻转数组的一部分
- 发送字节数组的一部分
- for循环不包括需要包含数组的一部分
- C++将字符数组的一部分复制到另一个字符数组
- 如何将数组的一部分从 int 转换为浮点数并将值设置为另外两个数组
- 复制存储在内存映射文件中的数组的一部分
- 如何将此INT数组的一部分复制到C 中的另一个数组
- 有条件地确定字符串是否是数组的一部分
- 通过指向函数的指针循环传递数组的一部分