所以这可能是我的第一个基本程序。它接受用户关于三角形的输入,然后对它们进行分类并输出给出的数据所暗示的三角形类型。我一直在猜测,如果事情只是用C++来玩,但我遇到了问题。我没有从我的程序中得到预期的结果(虽然以前不完美),而不是输入边长,我输入第一边的长度,它会自动跳过其他两边的长度并继续编码。我的代码中有错误,可能是语法错误,或者我找不到if语句。编程新手
#include <iostream>
using std::cout;
using std::cin;
int sideA, sideB, sideC, angleA, angleB, angleC, longest, middle, shortest, sumbc, sumac, sumab;
int main()
{
cout << "Enter an angle for angle A\n";
cin >> angleA;
cout << "Enter an angle for angle B\n";
cin >> angleB;
cout << "Enter an angle for angle C\n";
cin >> angleC;
sumbc = angleB+angleC;
sumac = angleA+angleC;
sumab = angleA+angleB;
if(angleA + angleB + angleC == 180){ // This confirms that the angles add to 180 to form a triangle
cout << "This is a triangle!(Based on Angles)\n";
if(angleA == 90){ // These are for right angle triangles
cout << "This is a real right triangle!(angleA is 90 degrees..)\n";
cout << "Please enter the side lengths now\n";
cout << "Side 1:\n";
cin >> sideA;
cout << "Side 2:\n";
cin >> sideB;
cout << "Side 3:\n";
cin >> sideC;
if(sideA > sideB && sideA > sideC){
longest = sideA;
cout << "Side 1 is the hypotenuse!\n";
}
else if(sideB > sideA && sideB > sideC) {
cout << "Side 2 is the hypotenuse\n";
longest = sideB;
}
else if(sideC > sideA && sideC > sideB){
cout << "The hypotenuse is Side 3\n";
longest = sideC;
}
if(longest == sideC && sideA == sideB) { //Determines what kind of triangle it is if the longest side is sideC
cout << "This triangle is Right and Isosceles\n ";
}
else if(longest == sideB && sideC == sideA){
cout << "This triangle is Right and Isosceles\n ";
}
else if(longest == sideA && sideB == sideC){
cout << "This triangle is Right and Isosceles\n ";
}
else {
cout << "This triangle is right and Scalene!\n";
}
}
if(angleB == 90){ // These are for right angle triangles
cout << "This is a real right triangle!(angleB is 90 degrees..)\n";
cout << "Please enter the side lengths now\n";
cout << "Side 1:\n";
cin >> sideA;
cout << "Side 2:\n";
cin >> sideB;
cout << "Side 3:\n";
cin >> sideC;
if(sideA > sideB && sideA > sideC){ //Finds longest side
longest = sideA;
cout << "Side 1 is the hypotenuse!\n";
}
else if(sideB > sideA && sideB > sideC) {
cout << "Side 2 is the hypotenuse\n";
longest = sideB;
}
else if(sideC > sideA && sideC > sideB){
cout << "The hypotenuse side is Side 3";
longest = sideC;
}
if(longest == sideC && sideA == sideB) { //Determines what kind of triangle it is if the longest side is sideC
cout << "This triangle is Right and Isosceles\n ";
}
else if(longest == sideB && sideC == sideA){
cout << "This triangle is Right and Isosceles\n ";
}
else if(longest == sideA && sideB == sideC){
cout << "This triangle is Right and Isosceles\n ";
}
else {
cout << "This triangle is right and scalene!\n";
}
}
if(angleC == 90){ // These are for right angle triangles
cout << "This is a real right triangle!(angleC is 90 degrees..)\n";
cout << "Please enter the side lengths now\n";
cout << "Side 1:\n";
cin >> sideA;
cout << "Side 2:\n";
cin >> sideB;
cout << "Side 3:\n";
cin >> sideC;
if(sideA > sideB && sideA > sideC){
longest = sideA;
cout << "Side 1 is the hypotenuse!\n";
}
else if(sideB > sideA && sideB > sideC) {
cout << "Side 2 is the hypotenuse\n";
longest = sideB;
}
else if(sideC > sideA && sideC > sideB){
cout << "The hypotenuse is Side 3";
longest = sideC;
}
if(longest == sideC && sideA == sideB) { //Determines what kind of triangle it is if the longest side is sideC
cout << "This triangle is Right and Isosceles\n ";
}
else if(longest == sideB && sideC == sideA){
cout << "This triangle is Right and Isosceles\n ";
}
else if(longest == sideA && sideB == sideC){
cout << "This triangle is Right and Isosceles\n ";
}
else {
cout << "This triangle is right and scalene!\n";
}
}
if(angleA == angleB && angleB == angleC){ // This is for equiangular/equilateral triangles
cout << "This is an equiangular/equilateral triangle.\n ";
cout << "Please enter the side lengths now\n";
cout << "Side 1:\n";
cin >> sideA;
int periequal = sideA*3;
int areaequal = sideA*sideA*.5;
cout << "The area is : " << areaequal << std::endl << "The perimeter is: " << periequal << std::endl;
cout << "This triangle is Isosceles, Equiangular, Equilateral, and Acute ";
}
if(angleA < 90 && sumbc != 120 && angleB < 90 && angleC < 90){ //deals with acute triangles
cout << "This is an acute triangle!\n";
cout << "Please enter the side lengths now\n";
cout << "Side 1:\n";
cin >> sideA;
cout << "Side 2:\n";
cin >> sideB;
cout << "Side 3:\n";
cin >> sideC;
int AcuteIsoPeri = sideA + sideB + sideC;
if (sideA == sideB){
cout << "This is an Acute, Isosceles Triangle. \n" << "With a perimeter of: " << AcuteIsoPeri;
}
else if(sideA == sideC){
cout << "This is an Acute, Isosceles Triangle. \n" << "With a perimeter of: " << AcuteIsoPeri;
}
else if(sideB == sideC){
cout << "This is an Acute, Isosceles Triangle. \n" << "With a perimeter of: " << AcuteIsoPeri;
}
else{
cout << "This is an Acute, Scalene Triangle. \n" << "With a perimeter of " << AcuteIsoPeri;
}
} //end of angleA if statement
if(angleA > 90){ //Deals with obtuse
cout << "This angle is Obtuse, angle A is greater than 90..";
cout << "Please enter the side lengths now\n";
cout << "Side 1:\n";
cin >> sideA;
cout << "Side 2:\n";
cin >> sideB;
cout << "Side 3:\n";
cin >> sideC;
if (sideA == sideB){
cout << "This is an Obtuse, Isosceles Triangle. \n";
}
else if(sideA == sideC){
cout << "This is an Obtuse, Isosceles Triangle. \n";
}
else if(sideB == sideC){
cout << "This is an Obtuse, Isosceles Triangle. \n";
}
else{
cout << "This is an Obtuse, Scalene Triangle. \n";
}
}
else if(angleB > 90){
cout << "This angle is Obtuse, angle B is greater than 90..";
cout << "Please enter the side lengths now\n";
cout << "Side 1:\n";
cin >> sideA;
cout << "Side 2:\n";
cin >> sideB;
cout << "Side 3:\n";
cin >> sideC;
if (sideA == sideB){
cout << "This is an Obtuse, Isosceles Triangle. \n";
}
else if(sideA == sideC){
cout << "This is an Obtuse, Isosceles Triangle. \n";
}
else if(sideB == sideC){
cout << "This is an Obtuse, Isosceles Triangle. \n";
}
else{
cout << "This is an Obtuse, Scalene Triangle. \n";
}
}
else if(angleC > 90){
cout << "This angle is Obtuse, angle C is greater than 90..";
cout << "Please enter the side lengths now\n";
cout << "Side 1:\n";
cin >> sideA;
cout << "Side 2:\n";
cin >> sideB;
cout << "Side 3:\n";
cin >> sideC;
if (sideA == sideB){
cout << "This is an Obtuse, Isosceles Triangle. \n";
}
else if(sideA == sideC){
cout << "This is an Obtuse, Isosceles Triangle. \n";
}
else if(sideB == sideC){
cout << "This is an Obtuse, Isosceles Triangle. \n";
}
else{
cout << "This is an Obtuse, Scalene Triangle. \n";
}
}
}
//scalene, obtuse, acute
return 0;
}
所以我可能不知道我在做什么,我是一个可怕的程序员什么的哈哈,但这里是我所得到的,当我把这个信息: 信息:角度是40,114,26 ..它认为这是对的,这是正确的,然后它要求的边长也是我打算做的。然后我把第一边的长度(6.4)并且程序跳到最后一次我按回车。我可能犯了一个我无法找到的语法错误,或者如果语句错误,我使用了这种方式。如果你能帮助这个混乱,将不胜感激! (开始研究C++的晚上,并希望将其应用到真实的东西是这个怪物是如何产生的。)Examle of Proper Output ... Example of Wrong Output
你有一个逻辑错误。程序编译并链接正常。在语法错误的情况下,程序不会编译 – Nandu
@Nandu哦好吧,谢谢你,我会更新这个问题。 – Noah
欢迎来到Stack Overflow。我无法重现您的错误。当你编写代码时,从小而简单的工作开始,这是一个好主意,然后再逐步增加一点复杂性,在每一步都进行测试。这样你就不会在一个巨大的程序中寻找一个可能在任何地方的错误。如果你真的那么做了,试着将代码简化成一个[最小完整的例子](http://stackoverflow.com/help/mcve),这是产生错误的最简单的例子。这会让狩猎更容易,对你和我们来说都是如此。 – Beta