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

希望知道这个算式是哪里出了什么问题,出来的结果令人纠结……

日寂 发布于 2014-03-15 00:09, 471 次点击
程序代码:
#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
7 回复
#2
hms2014-03-15 15:00
第六行
 return pow(pow(length,2)+pow(width,2),0.5)/size;
#3
hms2014-03-15 15:03
scanf("%lf*%lf,%lf",&px_width,&px_length,&phone_size);    //逗号为英文逗号
#4
日寂2014-03-15 16:43
回复 3楼 hms
应该不是这两个问题,double型用2.0没有问题,运行时我输入前也有转化成英文输入来着
#5
hms2014-03-15 19:21
回复 4楼 日寂
不是2.0的问题,你少了一个pow,仔细看
#6
hms2014-03-15 19:23
回复 4楼 日寂
我的运行没问题
#7
hms2014-03-15 19:27
回复 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;
}
#8
日寂2014-03-15 20:34
回复 7楼 hms
哦哦哦哦哦哦,原来如此,我眼睛有问题了,多谢啊!
1