标题:函数设置不会,结构体刚接触,请教各位
只看楼主
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
结帖率:100%
已结贴  问题点数:20 回复次数:11 
函数设置不会,结构体刚接触,请教各位
要求输入三个点的坐标,然后判断是否能形成三角形。如果可以形成三角形,则计算其面积;如果不能形成三角形,提示不是三角形就好了。
目前有了框架,但是关于如何输入输出我其实还是不懂,因为刚接触,我不知道如何把我输入的点赋值成坐标系中的坐标,并且还要判断他能不能形成三角形;至于面积的话,我虽然知道用三个点的坐标求面积,但是我也不知道怎么使用我输入的三个点并用C语言求。
求指点一下谢谢啊,现在只需要编写几个函数就行了貌似,就是如何求面积,如何判断他是否能形成三角形。
急需。
程序代码:
#include <stdio.h>

typedef struct
{
    float x;
    float y;
}
dot_type;

typedef struct
{
    dot_type d1;
    dot_type d2;
    dot_type d3;
    
    int type;
    float s;
}
tri_angle_type;
int main()
{
    tri_angle_type tri_angle[3];
    
    input(tri_angle);
    cmp_area(tri_angle);
    output(tri_angle);
    
    return 0;
}
搜索更多相关主题的帖子: 函数 输入 三角形 面积 float 
2019-03-31 16:39
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
得分:0 
dot 这个结构体的成员是横纵坐标;tri_angle 这个结构体的成员是三个点,然后还有面积。本来还让判断三角形的类型来着,但是我估计弄不来 ,我就不去判断三角形类型(等腰、等边、直角、钝角 、锐角等等)了。
2019-03-31 16:43
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
得分:0 
求求各位帮个忙呀
2019-03-31 16:43
ZJYTY
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:92
专家分:700
注 册:2018-12-20
得分:20 
程序代码:
#include <stdio.h>
#include <math.h>

typedef struct
{
    float x;
    float y;
}
dot_type;

typedef struct
{
    dot_type d1;
    dot_type d2;
    dot_type d3;

    int type;
    float s;
}
tri_angle_type;

void input(tri_angle_type *pinput)
{
    scanf("%f,%f",&((pinput->d1).x),&((pinput->d1).y));
    scanf("%f,%f",&((pinput->d2).x),&((pinput->d2).y));
    scanf("%f,%f",&((pinput->d3).x),&((pinput->d3).y));
}

float get_len(float x1,float y1,float x2,float y2)
{
    return sqrt(pow((x1-x2),2)+pow((y1-y2),2));
}

void cmp_area(tri_angle_type *pinput)
{
    float l1 = get_len((pinput->d1).x,(pinput->d1).y,(pinput->d2).x,(pinput->d2).y);
    float l2 = get_len((pinput->d1).x,(pinput->d1).y,(pinput->d3).x,(pinput->d3).y);
    float l3 = get_len((pinput->d2).x,(pinput->d2).y,(pinput->d3).x,(pinput->d3).y);

    if(l1<=0 || l2<=0 || l3<=0 || l1+l2<=l3 || l1+l3<=l2 || l2+l3<=l1)
    {
        pinput->type = -1;
        return;
    }

    float temp = (l1+l2+l3)/2;
    pinput->s = sqrt(temp*(temp-l1)*(temp-l2)*(temp-l3));
    pinput->type = 1;
}


void output(tri_angle_type *pinput)
{
    if(pinput->type == -1)
    {
        printf("Not a triangle\n");
        return;
    }

    printf("The area is %f\n",pinput->s);
}

int main()
{
    tri_angle_type tri_angle;

    input(&tri_angle);
    cmp_area(&tri_angle);
    output(&tri_angle);

    return 0;
}

-------------------------------若有不当之处,敬请谅解-------------------------------
2019-03-31 18:21
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
得分:0 
这个不是语言问题,是算法问题。

如何求是否构成三角形就是根据三角形的性质: 两边和大于第三边,两边差小于第三边。

求面积使用海伦公式即可。

代码测试环境:  WinXP+C-Free5.0.
2019-03-31 20:03
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
得分:0 
回复 4楼 ZJYTY
谢谢你呀。但是有四个报错。
2019-03-31 20:53
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
得分:0 
我定义了个局部变量,现在好了,只有一个错误了。
2019-03-31 20:58
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
得分:0 
#include "stdio.h"
#include "math.h"
int main()
{
   
    float a,b,c,t,p;
    scanf("%f%f%f",&a,&b,&c);
    if(a>b)
    {t=a;a=b;b=t;}
    if(a>c)
    {t=a;a=c;c=t;}
    if(b>c)
    {t=b;b=c;c=t;}
/*排序,从小到大*/   
    if((a+b>c)&&(c-b<a))
    {
        p=(a+b+c)/2;
        if((a==b)||(a==c)||(b==c))
        {
            if(a==b&&a==c)printf("等边三角形");
            else printf("等腰三角形");
        }
        if(a*a+b*b<c*c)printf("等角三角形");
        if(a*a+b*b==c*c)printf("直角三角形");
        if(a*a+b*b>c*c)printf("锐角三角形");   
        printf("面积为%.2f",sqrt(p*(p-a)*(p-b)*(p-c)));
    }
    else printf("构不成三角形");
return 0;
}    我没用结构体,但是我看了一下  你的结构体只是用来存储坐标的,所以利用两点坐标公式转化成三边长,然后利用我这个程序可以出来,这个程序有一个不好的地方是如果是等边三角形的话,它即输出等边,也输出锐角(但是这是满足条件的,等边三角形也是锐角三角形)  没时间改了  就这样给你了。自己编的  不喜勿喷,但是欢迎指教!    对了  我用的是DEVC++
2019-03-31 22:35
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
得分:0 
回复 8楼 C基础
谢谢,但是由于刚学了结构体,所以必须得用上。不过也还是很谢谢了,愿意花时间来解答。
2019-03-31 23:22
三脚猫a
Rank: 2
等 级:论坛游民
帖 子:61
专家分:90
注 册:2019-2-27
得分:0 
已经弄出来了,谢谢
2019-04-01 12:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493884-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.481847 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved