谁能帮我看一下这个程序,用C语言编火灾报警器的程序

Python019

谁能帮我看一下这个程序,用C语言编火灾报警器的程序,第1张

给你支个招,用while循环检测按键,用中断显示

代码如下(部分代码)

#define TH_0 (65535-count_M0)/256 //T0的高八位值

#define TL_0 (65535-COUNT_m0)%256//T0的低八位值

{

IE=0x82//10000010,开启总中断,启用TF0中断

TMOD=0X01//0000 0001,选择T0为模式1

TH0=TH_0//装入高8位

TL0=TL_0//装入低八位

TR0=1//启动T0

beep=1

gled=0

ssnd=30

while(1)

{

if(S2==0)

{delay(10)

a++

}

if(S3==0)

{delay(10)

a--

}

}

}

void my_display(void) interrupt 1//采用中断的方式进行显示

{

display(ssnd)

alarm()

if(beep==0)

{ rled=1

gled=0

beep=~beep

}

#include "stdafx.h"

#include <iostream>

#include <cstdlib>

#include <cmath>

using namespace std

//方程一(参见步骤一)

#define f0(x1,x2) (x1*x1-x2-1)

//方程二(参见步骤一)

#define f1(x1,x2) ((x1-2)*(x1-2)+(x2-0.5)*(x2-0.5)-1)

//方程精度(参见步骤一)

#define x_ 0.000001

//矩阵阶数(参见步骤二)

#define matrixNum 2

//计算雅克比矩阵逆(参见步骤三)

double *matrixF2(double *x)

//计算雅克比矩阵(参见步骤二)

double *matrixB1(double *b,double *q,double *matrixB)

void main()

{

//计数器

int i,j

double n

//函数中自变量

double *x

double *b,*c,*q,p

double *t //(p-matrixB*q)

double *s //(pT*matrixB)

//方程组函数值

double *matrixF

//矩阵F的雅可比矩阵的逆

double *matrixB

double *matrixB1

//开辟空间

x=(double *)malloc(matrixNum)

b=(double *)malloc(matrixNum)

c=(double *)malloc(matrixNum)

q=(double *)malloc(matrixNum)

s=(double *)malloc(matrixNum)

t=(double *)malloc(matrixNum)

//计算方程组函数值

matrixF=(double *)malloc(matrixNum)

//matrixB=(double *)malloc(matrixNum*matrixNum)

matrixB1=(double*)malloc(matrixNum*matrixNum)

// 自变量输入

cout<<"请输入初值:"

for(i=0i<matrixNumi++)

cin>>*(x+i)

//计算雅克比矩阵逆

matrixB=matrixF2(x)

//计算函数值

*matrixF=f0(*x,*(x+1))

*(matrixF+1)=f1(*x,*(x+1))

do

{

p=0.0

for(i=0i<matrixNumi++)

*(c+i)=*(matrixF+i)

for(i=0i<matrixNumi++)

{

*(b+i)=0

*(q+i)=0

cout<<*(c+i)<<" "

}

cout<<endl<<"x值"

for(i=0i<matrixNumi++)

{

for(j=0j<matrixNumj++)

*(b+i)+=*(matrixB+i*matrixNum+j)*(*(c+j))

*(b+i)=-*(b+i)

*(x+i)=*(x+i)+(*(b+i))

cout<<*(x+i)<<" "

}

cout<<endl

*matrixF=f0(*x,*(x+1))

*(matrixF+1)=f1(*x,*(x+1))

for(i=0i<matrixNumi++)

{

p+=pow(*(b+i),2)

*(q+i)=*(matrixF+i)-*(c+i)

}

n=0

for(i=0i<matrixNumi++)

{

*(t+i)=0

*(s+i)=0

}

for(i=0i<matrixNumi++)

{

for(j=0j<matrixNumj++)

{

*(t+i)+=*(matrixB+i*matrixNum+j)*(*(q+j))

*(s+i)+=*(b+j)*(*(matrixB+j*matrixNum+i))

}

for(j=0j<matrixNumj++)

n+=*(s+i)*(*(q+j))

*(t+i)=*(b+i)-*(t+i)

}

for(i=0i<matrixNumi++)

cout<<endl<<*(q+i)<<" "

cout<<endl<<n<<endl

for(i=0i<matrixNumi++)

for(j=0j<matrixNumj++)

*(matrixB1+i*matrixNum+j)=*(t+i)*(*(s+j))/n+*(matrixB+i*matrixNum+j)

for(i=0i<matrixNumi++)

{

for(j=0j<matrixNumj++)

cout<<*(matrixB1+i*matrixNum+j)<<" "

cout<<endl

}

getchar()

matrixB=matrixB1

}while(sqrt(p)>x_)

//delete [] s

//delete [] t

//delete [] matrixF

//delete [] matrixB

cout<<"以上为结果"<<endl

getchar()

}

double *matrixF2(double *x)

{

int i,j

double t

double *matrixF1 //矩阵F的雅可比矩阵

double *matrixF2 //矩阵F的雅可比矩阵的逆

matrixF1=(double *)malloc(matrixNum*matrixNum)

matrixF2=(double *)malloc(matrixNum*matrixNum)

for(i=0i<matrixNumi++)

for(j=0j<matrixNumj++)

if(i==j)

*(matrixF2+i*matrixNum+j)=1

else *(matrixF2+i*matrixNum+j)=0

*matrixF1=(f0((*x+x_),*(x+1))-f0(*x,*(x+1)))/x_

*(matrixF1+1)=(f0(*x,(*(x+1)+x_))-f0(*x,*(x+1)))/x_

*(matrixF1+2)=(f1((*x+x_),*(x+1))-f1(*x,*(x+1)))/x_

*(matrixF1+3)=(f1(*x,(*(x+1)+x_))-f1(*x,*(x+1)))/x_

for(i=0i<matrixNumi++)

cout<<*(x+i)<<endl

cout<<"矩阵F在["<<*x<<','<<*(x+1)<<"]的雅可比矩阵"<<endl

for(i=0i<matrixNumi++)

{

for(j=0j<matrixNumj++)

cout<<*(matrixF1+i*matrixNum+j)<<" "

cout<<endl

}

//求矩阵F的雅可比矩阵的逆

t=*matrixF1

for(i=0,j=0j<matrixNumj++)

{

*(matrixF1+i*matrixNum+j)/=t

*(matrixF2+i*matrixNum+j)/=t

}

t=*(matrixF1+1*matrixNum)

for(i=1,j=0j<matrixNumj++)

{

*(matrixF1+i*matrixNum+j)-=*(matrixF1+j)*t

*(matrixF2+i*matrixNum+j)-=*(matrixF2+j)*t

}

t=*(matrixF1+1*matrixNum+1)

for(i=1,j=0j<matrixNumj++)

{

*(matrixF1+i*matrixNum+j)/=t

*(matrixF2+i*matrixNum+j)/=t

}

t=*(matrixF1+1)

for(i=i,j=0j<matrixNumj++)

{

*(matrixF1+j)-=*(matrixF1+i*matrixNum+j)*t

*(matrixF2+j)-=*(matrixF2+i*matrixNum+j)*t

}

for(i=0i<matrixNumi++)

{

for(j=0j<matrixNumj++)

cout<<*(matrixF1+i*matrixNum+j)<<" "

cout<<endl

}

for(i=0i<matrixNumi++)

{

for(j=0j<matrixNumj++)

cout<<*(matrixF2+i*matrixNum+j)<<" "

cout<<endl

}

getchar()

return matrixF2

delete [] matrixF1

delete [] matrixF2

}

//double *matrixB1(double *b,double *q,double *matrixB)

//{

// int i,j

//}

VS2008运行可行

请采纳答案,支持我一下。