50分,求将以下代码改为C++的

来源:百度知道 编辑:UC知道 时间:2024/05/30 08:32:07
原C代码如下,麻烦改成C++的,需要有适当的注释,先给30分,另外20分在结题时送出,保证守信。代码运行后效果应该和原C代码一致,优质代码另有10-50分不等的送分。

#include<stdio.h>
void main()
{int i,j;int k=0;
FILE *fp;
float a[31][23];
float c,d;
for(i=0;i<31;i++){
for(j=0;j<23;j++)a[i][j]=30;
}
for(i=1;i<30;i++){
for(j=1;j<22;j++)a[i][j]=26;
}
for(i=2;i<29;i++){
for(j=2;j<21;j++)a[i][j]=22;
}
for(i=3;i<28;i++){
for(j=3;j<20;j++)a[i][j]=18;
}
for(i=4;i<27;i++){
for(j=4;j<19;j++)a[i][j]=14;
}
for(i=5;i<26;i++){
for(j=5;j<18;j++)a[i][j]=10;
}
for(i=6;i<25;i++){
for(j=6;j<17;j++)a[i][j]=0;
}
while(k<335)
{for(i=1;i<30;i++)
{for(j=1;j<22;j++)
{if((i>4)&&(i<26)&&(j>4)&&(j<18))continue;
else d=a[i][j];
a[i][j]=(a[i+1][j]+a[i-1][j]+a[i][j+1]+a[i][j-1])*0.25;
c=a[i][j]-d;
if(c<0)c=0-c;
if(c<=0.002)k++;
else

源代码有一处小问题没考虑周全,参见注释。

以下代码VC++6.0调试通过。

-------------------------------------------------

#include <cstdio>
#include <fstream>
#include <iostream>
#include <iomanip>

using namespace std;

void main()
{
int i = 0, j = 0,k = 0;
float c = 0.0, d = 0.0;
float a[31][23];
ofstream ofs;

for(i=0;i<31;i++)
for(j=0;j<23;j++)
a[i][j] = (i<1||i>=30||j<1||j>=22)?30:( (i<2||i>=29||j<2||j>=21)?26:( (i<3||i>=28||j<3||j>=20)?22:( (i<4||i>=27||j<4||j>=19)?18:( (i<5||i>=26||j<5||j>=18)?14:( (i<6||i>=25||j<6||j>=17)?10:0 ) ) ) ) );
while(k<335)
for(i=1;i<30;i++)
for(j=1;j<22;j++)
{
if((i>4)&&(i<26)&&(j>4)&&(j<18)) continue; else d=a[i][j];