| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 291 人关注过本帖
标题:请教<与<=的问题。
只看楼主 加入收藏
zoliya
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-9-11
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:5 
请教<与<=的问题。


我写的一个练习题  目的是 使用面向对象的方法求三角形面积,用到了海伦公式。貌似可以运行正确结果,但是奇怪在我把其中的<换成<=就不对了,全部都成了不能构成三角形,不知道问题出在哪里,程序如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace study1
{
    class Program
    {
        static void Main(string[] args)
        {
            tri tt = new tri();
            tt.A = 4;
            tt.B = 5;
            tt.C = 6;
            if (tt.ar(tt.A, tt.B, tt.C) == -1)
            {
                Console.WriteLine("没有面积");
            }
            else
            {
                Console.WriteLine("面积是{0}", tt.ar(tt.A, tt.B, tt.C));
            }
            Console.ReadKey();
        }
    }
    class tri
    {
        private float a,b,c;
        public float A
        {
            set
            {
                if (a < 0)
                {
                    return;
                }
                this.a = value;
            }
            get
            {
                return this.a;
            }
        }
        public float B
        {
            set
            {
                if (b < 0)
                {
                    return;
                }
                this.b = value;
            }
            get
            {
                return this.b;
            }
        }
        public float C
        {
            set
            {
                if (c < 0)
                {
                    return;
                }
                this.c = value;
            }
            get
            {
                return this.c;
            }
        }
        public float ar(float aa, float bb, float cc)
        {
            float s, d, p;
            if (aa > (cc + bb))
            {
                Console.WriteLine("不能构成三角形!");
                return -1;
            }
            if (bb > (aa + cc))
            {
                Console.WriteLine("不能构成三角形!");
                return -1;
            }
            if (cc > (bb + aa))
            {
                Console.WriteLine("不能构成三角形!");
                return -1;
            }
            p = aa / 2 + bb / 2 + cc / 2;
            d = p*(p-aa)*(p-bb)*(p-cc);
            s = Convert.ToSingle(System.Math.Sqrt(d));
            return s;
        }
    }
}
搜索更多相关主题的帖子: 海伦公式 练习题 class 三角形 
2011-09-11 17:42
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:20 
只能在于,等于就不是三角形了!

   唯实惟新 至诚致志
2011-09-11 21:28
zoliya
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-9-11
收藏
得分:0 
比如说:
 set
            {
                if (b < 0)
                {
                    return;
                }
                this.b = value;
            }
按理说这个<换成<=没啥问题么,但是一换结果就成了不能构成三角形 - -!
2011-09-11 22:06
zoliya
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-9-11
收藏
得分:0 
2011-09-14 20:19
依稀记得
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2011-8-27
收藏
得分:0 
   class tri
    {
        private float a,b,c;
        public float A
        {
            set
            {
                if (value <= 0)
                {
                    return;
                }
                this.a = value;
            }
            get
            {
                return this.a;
            }
        }
        public float B
        {
            set
            {
                if (value <= 0)
                {
                    return;
                }
                this.b = value;
            }
            get
            {
                return this.b;
            }
        }
        public float C
        {
            set
            {
                if (value <= 0)
                {
                    return;
                }
                this.c = value;
            }
            get
            {
                return this.c;
            }
        }
        public float ar(float aa, float bb, float cc)
        {
            float s, d, p;
            if (aa > (cc + bb))
            {
                Console.WriteLine("不能构成三角形!");
                return -1;
            }
            if (bb > (aa + cc))
            {
                Console.WriteLine("不能构成三角形!");
                return -1;
            }
            if (cc > (bb + aa))
            {
                Console.WriteLine("不能构成三角形!");
                return -1;
            }
            p = aa / 2 + bb / 2 + cc / 2;
            d = p*(p-aa)*(p-bb)*(p-cc);
            s = Convert.ToSingle(System.Math.Sqrt(d));
            return s;
        }
    }
}
2011-09-17 00:26
依稀记得
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2011-8-27
收藏
得分:0 
在楼主的三角形的类中。 a ,b ,c 的没有初始化, 默认值是0。所以"a <= 0"就不对。会直接返回。正确的应该是(Value <= 0).
2011-09-17 00:29
快速回复:请教<与<=的问题。
数据加载中...
 
   



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

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