指针c语言求电阻的并联值,计算电阻使之符合要求值,,“简单”的难题!!!...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我的想法是这样的:

把电阻拿在手上,住地上扔,地上有一个N格的盒子(有多少个电阻那个盒子我就假定多少格),格子里的电阻全部并联,格子间全部串联,没有电阻的格子可视作去掉。

按这想法,我写了个程序,也能运行:

#include

#include

#include

#define RES_NUM 5//给出RES_NUM个电阻

#define WANT 10 //需要的阻值

void Thrown(void);//掷电阻函数声明

void Diff_Calc(void);//差值计算

void Dis(void);//输出显示

void Zero(void);//归零 double RES[RES_NUM] = {0};//电阻值存放在这个数组里,RES_NUM代表电阻的个数

double GRID[RES_NUM][RES_NUM]={0};//二维电阻格

double DIFF;//差值

int RND; //0到RES_NUM的随机变量 void main(void)

{

int i; //循环变量

int k;

printf ("请输入%d个电阻值\n", RES_NUM); for (i=0; i

{

scanf("%lf",&RES[i]);

} for(k=0; k<500000; k++)

{

Thrown();

Diff_Calc();

if ( (DIFF <= 0.1) && (DIFF >= -0.1) )

{

Dis();

printf ("%lf\n",DIFF);

system ("pause");

}

Zero();

}

system ("pause");

} void Thrown(void)//掷电阻函数

{ int i; //循环变量 for (i=0 ; i

{

RND = rand() % RES_NUM;

GRID[i][RND] = RES[i];

} }

void Diff_Calc(void)

{

double temp[RES_NUM]={0};

int i;

int j;

int k;

double ALL=0;

for (j=0; j

{

for (i=0; i

{

if (GRID[i][j] != 0)

{

temp[j] += 1/GRID[i][j]; } }

if (temp[j] != 0)

temp[j] = 1/temp[j];

else

temp [j] = 0;

}

for (k=0; k

{

ALL += temp[k];

}

DIFF = (ALL - WANT); } void Dis(void)//输出显示

{

int i;

int j;

printf ("\n");

for (j=0; j

{

for (i=0; i

{

printf("%2.0lf ", GRID[j][i]);

}

printf("\n");

}

} void Zero(void)//归零

{

int i;

int j;

for (j=0; j

{

for (i=0; i

{

GRID[i][j] = 0;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值