| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 408 人关注过本帖
标题:大家帮一下
只看楼主 加入收藏
zhujialei
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
大家帮一下
#include "stdio.h"
#include  "math.h"
void sing(double d);
main()
{
    int n,Ua,Ub,Uc,Udc;
    float t;
    double  ta,tb,tc,t1,t2,x,y,z,Vref1,Vref2,Vref3,U1,U2,Tomx1,Tomx2,Tomx3;
    scanf("%f %f %f",&Ua,&Ub,&Uc);
    U1=(sqrt(2/3))*(Ua-0.5*Ub-0.5*Uc);
    U2=sqrt(1/2)*(Ub-Uc);          /* clarke变换 */
    Vref1=U2;
    Vref2=0.5*(sqrt(3)*U1-U2);
    Vref3=0.5*(-sqrt(3)*U1-U2);
    n=sing(Vref1)+2*sing(Vref2)+4*sing(Vref3) ;    /* 判断扇区号 */
    x=sqrt(3)*(U2/Udc)*t;
    y=(3*U1+sqrt(3)*U2)*t/(2*Udc);
    z=(sqrt(3)*U2-3*U1)*t/(2*Udc);                  /* 计算矢量作用常值 */
   if(n==1) t1=z,t2=y;
   if(n==2) t1=y,t2=-x;
   if(n==3) t1=-z,t2=x;
   if(n==4) t1=-x,t2=z;
   if(n==5) t1=x,t2=-y;
   if(n==6) t1=-y,t2=-z;
   if(t1+t2>t) t1=t1*t/(t1+t2),t2=t2*t/(t1+t2);     /* 按扇区号判断作用时间 */
   ta=(t-t1-t2)/4;
   tb=ta+0.5*t1;
   tc=tb+0.5*t2;
   if(n==1) Tomx1=ta,Tomx2=tb,Tomx3=tc;
   if(n==2) Tomx1=tb,Tomx2=ta,Tomx3=tc;
   if(n==3) Tomx1=tc,Tomx2=ta,Tomx3=tb;
   if(n==4) Tomx1=tc,Tomx2=tb,Tomx3=ta;
   if(n==5) Tomx1=tb,Tomx2=tc,Tomx3=ta;
   if(n==6) Tomx1=ta,Tomx2=tc,Tomx3=tb;        /* 按扇区号判断矢量切断点 */
}
void sing(double d)
{
    if(sing(d>0))
    return 1;
    else
    return 0;                               /* 判断扇区号中的子函数 */
    }
最后调用函数出现了问题  哪位高手能帮我解决一下下
谢谢了
搜索更多相关主题的帖子: include double 
2014-05-03 17:56
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:10 
又是从哪凑的代码

总有那身价贱的人给作业贴回复完整的代码
2014-05-03 19:09
zhujialei
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-3
收藏
得分:0 
自己写的  哪里有问题吗?
2014-05-03 19:23
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:10 
如果撸主自己都能写那么长的代码,则在最后的 sing 函数中出现:
 if(sing(d>0))
    return 1;
是不应该的。
2014-05-03 19:30
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
尤其是
void sing(double d)
的函数头,以及前面的声明
void sing(double d);
你想让这个函数做返回些什么呢?
2014-05-03 19:34
zhujialei
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-3
收藏
得分:0 
我的意思是自定义一个函数sing(x)。当x>0时,sing(x)=1。else sing(x)=0.
然后在主程序中调用这个函数。求指导函数的调用
2014-05-03 20:28
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
以下是引用zhujialei在2014-5-3 20:28:14的发言:

我的意思是自定义一个函数sing(x)。当x>0时,sing(x)=1。else sing(x)=0.
然后在主程序中调用这个函数。求指导函数的调用
如果你确实是要把这个判断写成一个函数,那应该这样:
int sing(double x) {
    if (x > 0) return 1;
    else return 0;
}
注意不要在前面放 void,这个 void 表示什么也不返回。开头的声明也要改。
更进一步,可改写为:
int sing(double x) {
    return x > 0 ? 1 : 0;
}
其实这个函数太过简单,如果调用次数不多,完全不用写,直接用 (x > 0 ? 1 : 0) 这个表达式代替即可。
建议你先学习一下C语言中有关函数的部分。
另外,如果具体的C语言实现(编译器)预定义 true 为 1(false 总是0),则更是可以简写成 (x > 0) 。
2014-05-03 20:41
zhujialei
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-3
收藏
得分:0 
回复 7 楼 top398
多谢了。
2014-05-03 21:12
快速回复:大家帮一下
数据加载中...
 
   



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

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