[poj1045]BodePlot

本文记录了解决POJ 1045题目的过程,包括遇到的问题和解决方法,如数学公式计算错误、malloc函数使用遗忘、math.h函数库不熟悉等,并分享了最终AC的代码。

http://poj.org/problem?id=1045

原来的打算是从前面开始,可是在1001就卡了几小时,于是就没耐心了。1001里面算结果那部分做好了,用数组保存每位数,算进位,然后在特殊的输出要求里卡壳了,逗号的位置去掉0...一大堆的东西,然后失去了耐心,尽量过些天把它搞定。受到了教训之后决定从每页通过率最高的题目开始做,自己水平的确不咋地,慢慢来。

 

1045完全只是一道电路计算题,把公式算出来,基本就完了。虽然很简单,但是过程却不顺利

  1. 计算不细心。居然把cos(pi/2+a)简化成sin(a),漏了负号,这个问题很容易察觉,因为在输出的数据中看到有是正确的、有刚好是相反数的、有完全错误的。
  2. malloc.暑假基本没怎么动手,连这个函数的使用格式都忘记了。另外,用calloc是不是比用这个好点?
  3. math.h包含的函数有哪些。其实不只是这个,应该找个函数大全来浏览一下,前些天看到库函数有qsort,感到很惊讶,平时根本没听说过。
  4. scanf 的小错误。手冷的结果就是什么样的错误都会出现,曾一度写出 scanf("%f %f %f %d", vS, R, C, n);这种可笑的语句,double型用%lf,后面该是&vS,不适用&在VC中警告是 local variable 'vS' used without having been initialized,第一反应还以为VC居然连变量没有初始化都警告了。

虽然很简单,简单到甚至没必要注释,但毕竟是第一个AC的代码。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define PI 3.1415926

int main()
{
    double alpha, w, C, R, vS;
    double *vR;
    int i, n;
    scanf("%lf %lf %lf %d", &vS, &R, &C, &n);
    vR = (double *)malloc(n*sizeof(double));

    for (i = 0; i < n; ++i)
    {
        scanf("%lf", &w);
        alpha   = atan(1/(w*C*R));   
        *(vR+i) = vS/(cos(alpha)+sin(alpha)/(w*C*R));
        /* *(vR+i)     = 1/(sin(PI/2+alpha)/vS-cos(PI/2+alpha)/(w*C*R*vS)); */
    }
    for (i = 0; i < n; ++i)
    {
        printf("%.3f\n", *(vR+i));
    }

    return 0;
}

[time]9-9-2012

转载于:https://www.cnblogs.com/hsylx1992/archive/2012/09/09/2677908.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值