当前位置:文档之家› 华科C++无限网格电阻

华科C++无限网格电阻

#include<iostream>
#include<iomanip>
#include<time.h>
using namespace std;
void CreateResist(double* res,int size);
void Calculate(double* res,double* cur,double* vol,int size);
void AdjustResult(double& pot,double* cur,double* vol,int size);
void DisplayResult(double*,double*,double*,int);
int main( )
{
int resCount;
cout<<"请输入电阻总数:";
while(true)
{
cin>>resCount;
resCount=resCount%2==0?resCount:resCount+1;
if(resCount<=0)
{
cout<<"输入错误:电阻数量不能小于或等于!"<<endl<<endl;
cout<<"请重新输入电阻总数:";
}
else
break;
}
double srcPotential;
cout<<"请输入电源电动势:";
cin>>srcPotential;
double* resist=new double[resCount];
double* current=new double[resCount];
double* voltage=new double[resCount];
CreateResist(resist,resCount);
Calculate(resist,current,voltage,resCount);
AdjustResult(srcPotential,current,voltage,resCount);
DisplayResult(resist,current,voltage,resCount);
delete[] resist;
delete[] current;
delete[] voltage;
system("Pause");
return 0;
}
void CreateResist(double* res,int size)
{
srand((int)time(0));
for (int i=0;i<size;i++)
{
*(res+i)=double(10+rand( )%90);
}
}
void Calculate(double* res,double* cur,double* vol,int size)
{
*(cur+size-1)=*(cur+size-2)=1/(*(res+size-1));
*(vol+size-1)=1;
*(vol+size-2)=*(cur+size-2)**(res+size-2);
int n=size/2-1;
while(n>0)
{
*(vol+2*n-1)=*(vol+2*n)+*(vol+2*n+1);
*(cur+2*n-1)=*(vol+2*n-1)/(*(res+2*n-1));
*(cur+2*n-2)=*(cur+2*n-1)+*(cur+2*n);
*(cur+2*n-2)=*(cur+2*n-2)**(res+2*n-2);
n--;
}
}
void AdjustResult(double& pot,double* cur,double* vol,int size)
{
double ratio=pot/(*vol+*(vol+1));
for (int i=0;i<size;i++)
{*(vol+i)*=ratio;
*(cur+i)*=ratio;
}
}
void DisplayResult(double* res,double* cur,double* vol,int size)
{
cout<<setw(4)<<"No"<<setw(15)<<"Resist(Ohm)"<<setw(15)<<"Current(A)"<<setw(15)<<"Voltage(V) "<<endl;
for (int i=0;i<size;i++)
{
cout<<setw(4)<<i+i<<setw(15)<<*(res+1)<<setw(15)<<*(cur+i)<<setw(15)<<*(vol+i)<<endl;
}
}。

相关主题