| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3015 人关注过本帖
标题:求三角形面积的问题
取消只看楼主 加入收藏
s36519882009
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
求三角形面积的问题
题目是这样的。
写程序由标准输入得到一系列三个一组的数,把每组数作为三角形的三条边,计算三角形的面积。注意
在程序里检查输入数据,对不能构成三角形的情况给出错误信息。(问题来自《从问题到程序》第四章
练习18题)
这是我编写的程序,但是不输出结果,语法没问题,应该是算法的问题。
#include<stdio.h>
#include<math.h>
  int mianji(double x,double y,double z){
      double a=(x+y+z)/2.0,sum;
      sum=sqrt(a*(a-x)*(a-y)*(a-z));
      return sum;
 }/*求三角形面积的函数*/
  void main(){
     double d=0,sum=0,x,a,b,c;
     int count;
     while(d!=EOF)
       {
       while((d=getchar())!=EOF&&(d==' '));/*如果输入的是空格的话,直接用掉。然后读后面的字符*/
       if(d==EOF) break;
     scanf("%lf",&x);/*没空格了,开始读数字了,我假设除了空格就是数字。*/
     a=x;count++; /*第一个数字赋值给a*/
       while((d=getchar())!=EOF&&(d==' '));
       if(c==EOF) break;
     scanf("%lf",&x);
     b=x;count++;/*第二个数字赋给b*/
       while((d=getchar())!=EOF&&(d==' '));
       if(c==EOF) break;
     scanf("%lf",&x);
     c=x;count++;/*第三个数字赋给c*/
     printf("%f",mianji(a,b,c));
     while((d=getchar())!=EOF&&(d==' '));
       }/*直到出现EOF的是时候,程序结束*/
}
我输入9个数 再输入^z  ^z就是EOF 结束字符。
但是不输出结果。百思不得其解啊。请各位大虾们指点指点~~~小弟新手

QQ截图未命名.png (4.64 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 输入一串数字 求三角形面积 
2009-07-26 23:00
s36519882009
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-3-2
收藏
得分:0 
原谅一个初学者的无知吧。
2009-07-27 10:55
s36519882009
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-3-2
收藏
得分:0 
这好难懂哦,弄了好几小时才基本弄通,好多没学过的东西,受益匪浅啊。我有个疑问。
struct triangle_str parse_lines(const char *in)
{
    struct triangle_str tri = {0};
   
    /* basic check */
    assert(in != NULL);
   
    /* format output */
    if (sscanf(in, "%lf %lf %lf", &(tri.x), &(tri.y), &(tri.z)) != 3)
    {
        printf("something wrong\n");
    }
   
    return tri;
}

这一段是把 line字符串输入到struct triangle_str tri的x,y,z里面去。
if (sscanf(in, "%lf %lf %lf", &(tri.x), &(tri.y), &(tri.z)) != 3)
    {
        printf("something wrong\n");
    }
输入进去不就结了吗?sscanf(in, "%lf %lf %lf", &(tri.x), &(tri.y), &(tri.z)) != 3 为什么要不等于3呢。而且无论你输入7个还是8个数,都不会输出printf("something wrong\n");。



还有这句get_area((struct triangle_str *)&tri))  有点不懂。。为什么不是get_area(struct triangle_str *tri)呢?
总之非常感谢啦。
2009-07-27 15:04
s36519882009
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-3-2
收藏
得分:0 
OK 啦 3q
2009-08-02 14:27
快速回复:求三角形面积的问题
数据加载中...
 
   



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

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