| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 471 人关注过本帖
标题:希望知道这个算式是哪里出了什么问题,出来的结果令人纠结……
只看楼主 加入收藏
日寂
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2013-11-1
结帖率:81.82%
收藏
已结贴  问题点数:5 回复次数:7 
希望知道这个算式是哪里出了什么问题,出来的结果令人纠结……
程序代码:
#include<stdio.h>
#include<iostream>
#include<cmath>
using namespace std;
//dpi(Dot Per Inch,像素密度)的计算公式:(长度像素^2+宽度像素^2)^(1/2)/屏幕尺寸
double calculate_dpi(double length=1920.0,double width=1080.0,double size=5.0)
{
    return ((pow(length,2.0)+pow(width,2.0)),0.5)/size;
}
int main()
{
    double px_length,px_width,phone_size,dpi;
    int choose,dp,px;
    cout<<"是否是1080P?是按1,否按0:"<<endl;
    cin>>choose;
    switch(choose)
    {
        case 0:
            {
                cout<<"请输入像素与屏幕大小(格式如:480*800,4.0):"<<endl;
                scanf("%lf*%lf,%lf",&px_width,&px_length,&phone_size);
                dpi=calculate_dpi(px_length,px_width,phone_size);break;
            }
        case 1: dpi=calculate_dpi();break;
    }
    cout<<"请输入要转换的像素大小:"<<endl;
    cin>>px;                                 //:我编译运行的时候程序跳过了这一步直接开始了下面的cout
    dp=(int)px*160/dpi;//dp与px的转换公式
    cout<<px<<"px="<<dp<<"dp"<<endl;
    return 0;
}


//预想中成功的结果应该是:switch(0)→input:480*800,4.0→input:px=466→output:px=320
2014-03-15 00:09
hms
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:22
注 册:2014-3-1
收藏
得分:0 
第六行
 return pow(pow(length,2)+pow(width,2),0.5)/size;
2014-03-15 15:00
hms
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:22
注 册:2014-3-1
收藏
得分:0 
scanf("%lf*%lf,%lf",&px_width,&px_length,&phone_size);    //逗号为英文逗号
2014-03-15 15:03
日寂
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2013-11-1
收藏
得分:0 
回复 3楼 hms
应该不是这两个问题,double型用2.0没有问题,运行时我输入前也有转化成英文输入来着

有妹故吾在。
2014-03-15 16:43
hms
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:22
注 册:2014-3-1
收藏
得分:5 
回复 4楼 日寂
不是2.0的问题,你少了一个pow,仔细看
2014-03-15 19:21
hms
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:22
注 册:2014-3-1
收藏
得分:0 
回复 4楼 日寂
我的运行没问题
2014-03-15 19:23
hms
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:22
注 册:2014-3-1
收藏
得分:0 
回复 4楼 日寂
#include<stdio.h>
#include<iostream>
#include<cmath>
using namespace std;
//dpi(Dot Per Inch,像素密度)的计算公式:(长度像素^2+宽度像素^2)^(1/2)/屏幕尺寸
double calculate_dpi(double length=1920.0,double width=1080.0,double size=5.0)
{
    return pow(pow(length,2.0)+pow(width,2.0),0.5)/size;
}
int main()
{
    double px_length,px_width,phone_size,dpi;
    int choose,dp,px;
    cout<<"是否是1080P?是按1,否按0:"<<endl;
    cin>>choose;
    switch(choose)
    {
        case 0:
            {
                cout<<"请输入像素与屏幕大小(格式如:480*800,4.0):"<<endl;
                scanf("%lf*%lf,%lf",&px_width,&px_length,&phone_size);
                dpi=calculate_dpi(px_length,px_width,phone_size);break;
            }
        case 1: dpi=calculate_dpi();break;
    }
    cout<<"请输入要转换的像素大小:"<<endl;
    cin>>px;                                 //:我编译运行的时候程序跳过了这一步直接开始了下面的cout
    dp=(int)px*160/dpi;//dp与px的转换公式
    cout<<px<<"px="<<dp<<"dp"<<endl;
    return 0;
}
2014-03-15 19:27
日寂
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2013-11-1
收藏
得分:0 
回复 7楼 hms
哦哦哦哦哦哦,原来如此,我眼睛有问题了,多谢啊!

有妹故吾在。
2014-03-15 20:34
快速回复:希望知道这个算式是哪里出了什么问题,出来的结果令人纠结……
数据加载中...
 
   



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

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