找出两个三角形是否一致

时间:2014-06-11 05:20:45

标签: c loops if-statement while-loop

问题是这样的:

  
    

编写一个程序,读取两个三角形的三个角度和边,如果它们是全等的,则打印。我们不知道用户想要做多少次。

  
#include <stdio.h>
#include <conio.h>
int main()
{
    float l1,l2,l3,l4,l5,l6;
    float a1,a2,a3,a4,a5,a6;
    char ans;
    int d=1;

    while(d<=2)
    {            
        printf("\nIntroduce the sides of triangle %d:",d);
        scanf("%f %f %f",&l1,&l2,&l3);
        printf("Introduce the angles of triangle %d:",d);
        scanf("%f %f %f",&a1,&a2,&a3);
        {
        if(l1==l4 &&l2==l5 && l3==l6 && a1==a4 && a2==a5 && a3==a6)
             printf("\n\tCongruent");
        else
             printf("\n\tNot congruent");
        }
    }
    getch();
    return 0;
}

这是我的代码,但是在开始时有一个问题,因为我很快结束角度提示,程序刚刚结束并说它们不一致,没有要求三角形2号,因此我没有完成“问是用户想要做其他三角形的事情“。我知道我的代码有点不对,但我不知道在哪里。

所有帮助都是感谢!

3 个答案:

答案 0 :(得分:0)

这是因为你的循环不完整。我推荐while(d<=2)

而不是for (int d = 1; d <= 2; ++d)

是否要求用户以相同的顺序输入两个三角形的顶点?如果没有,那么你需要检查WHICH角度是否匹配,然后检查相应的边。另外,有必要验证给定的角度和边是否形成有效的三角形?这可能成为一个非常复杂的问题。

答案 1 :(得分:0)

  • 在从两个三角形读取数据之前,您正在比较边。比较必须在一段时间之外。

  • 你需要在循环内的某个地方(任何地方)增加d。

  • 你不需要那些{}关闭if-else。

  • 您没有检查这些值是否可以接受,所以我们假设使用此程序的人只会提供正确的值,所以......

  • 检查一致性的最简单方法是检查第一个三角形上的所有边是否在第二个三角形上都有对应边。

    进行比较的方式我将作为挑战留给你......你可以从以下开始:

    if(l1 == l4 && l2 == l5 && l3 == l6) ...
    

    一旦你对如何解决,尝试和实现它有所了解,想想你将如何解决这个问题。 =)

答案 2 :(得分:-1)

我去改变并添加了一些东西,现在它看起来像这样:

#include <stdio.h>
#include <conio.h>
int main()
{
float l1,l2,l3,l4,l5,l6;
float a1,a2,a3,a4,a5,a6;
char resp;
printf("\n\t Triangles");
printf("\nBegin?");
 while(resp=getchar()=='y')
    {
      fflush(stdin);
      printf("\nIntroduce the sides of the first triangle:");
      scanf("%f %f %f",&l1,&l2,&l3);
      printf("Introduce the angles of first triangle:");
      scanf("%f %f %f",&a1,&a2,&a3);
      printf("\nIntroduce the sides of the second triangle:");
      scanf("%f %f %f",&l4,&l5,&l6);
      printf("Introduce the angles of the second triangle:");
      scanf("%f %f %f",&a4,&a5,&a6);
      fflush(stdin);
            if((l1==l4|| l1==l5 ||l1==l6) && (l2==l4 ||l2==l5 || l2==l6) && (l3==l4 || l3==l5 || l3==l6))
                 printf("\n\tCongruent");
            else
              printf("\n\tNot congruent");

             printf("\nMore triangles?:");
    }
     getch();
     return 0;
 }

它运行得很好,一切都很好,但我想知道有没有办法解决问题而不要求printf("\nBegin?");,或者要求它是唯一的方法来做到这一点?

如果有其他方式,这是否意味着我必须更改我的while(resp=getchar()=='y')