注册 登录
编程论坛 C++教室

C++求面积方法

psyqin 发布于 2018-01-23 22:50, 1946 次点击

两块瓷砖,一个长方形,长x cm,宽y cm,另一个是正方形,长方形瓷砖面积比正方形瓷砖面积大16cm2,问正方形瓷砖边长多少厘米(结果保留1位小数,四舍五入)?

我的做法是:

#include<iostream>
#include<cmath>
#include<cstdio>

using namespace std;
int main()
{
    int x,y,s;
    cin>>x>>y;
    s=sqrt(x*y-16);
    printf("%.1f",int(s*10+0.5)/10.0);

   
   
    return 0;
   
 }

但是提交答案后软件说不是最佳答案,什么样的做法才是合理的?请高手指点。
3 回复
#2
ehszt2018-01-25 15:30
s是整型,sqrt返回double型
printf是c的打印函数。
c++中用cout

[此贴子已经被作者于2018-1-25 15:32编辑过]

#3
stop12042018-01-26 10:25
啥嘛.. 像这种 都是从1开始 ~无限试.
反正机器很快的不用几秒就出来了
#4
stop12042018-01-26 11:46
软件估计是会给出一些数字 测试你的代码..
是不是类似 codewars 的东西?
如果只是简单求出来的话 这样就好了.
程序代码:

    double x = 0.1, y = 0.1, s = 0.0;
        while (y < 200.0) {
            if (x * y > 16) {
                s = sqrt (x * y - 16.0);
                cout << x << "-" << y << "-" << s << endl;
            }
            y += 0.1;
        }
//0.1-160.2-0.141421
//0.1-160.3-0.173205
//0.1-160.4-0.2
//0.1-160.5-0.223607
//0.1-160.6-0.244949
//0.1-160.7-0.264575
//0.1-160.8-0.282843
//0.1-160.9-0.3
//0.1-161-0.316228
//0.1-161.1-0.331662
//0.1-161.2-0.34641
//0.1-161.3-0.360555
//0.1-161.4-0.374166
//0.1-161.5-0.387298
//0.1-161.6-0.4



如果是随机给出数字测试你.  你只要给你代码加上 (x * y > 16)的条件
然后 return sqrt (x * y - 16.0);  应该就能过了
1