24,854
社区成员
发帖
与我相关
我的任务
分享
(1)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <ctime>
using namespace std;
const int MAX_SOL = 10000000;
const int MAX_LOOP = 10;
const double gAlfa = 0.92;
const double gSmall = 1.0E-30;
double bb[MAX_SOL], bw[MAX_SOL], bs[MAX_SOL], bp[MAX_SOL], bn[MAX_SOL], be[MAX_SOL], bt[MAX_SOL];
//double *bb, *bw, *bs, *bp, *bn, *be, *bt;
void new_sol();
void delete_sol();
void sol(int );
void main()
{
ofstream ofilout( "output.dat" );
if (! ofilout) {
cerr << "error: unable to open input file: "
<< "output.dat" << endl;
exit(0);
}
new_sol();
clock_t t_start = clock();
for ( int i = 0; i < MAX_LOOP; i++)
{
sol(i);
}
clock_t t_finish = clock();
delete_sol();
ofilout << setiosflags(ios::fixed) << setprecision(10);
ofilout << " Program takes CPU time "
<< static_cast<double>(t_finish - t_start) / CLOCKS_PER_SEC
<< " seconds." << endl;
ofilout.close();
}
void new_sol()
{
/*
bb = new double[MAX_SOL];
bw = new double[MAX_SOL];
bs = new double[MAX_SOL];
bp = new double[MAX_SOL];
bn = new double[MAX_SOL];
be = new double[MAX_SOL];
bt = new double[MAX_SOL];
for ( int i = 0; i < MAX_SOL; i++ )
{
bb[i] = 0.0;
bw[i] = 0.0;
bs[i] = 0.0;
bp[i] = 0.0;
bn[i] = 0.0;
be[i] = 0.0;
bt[i] = 0.0;
}
*/
}
void delete_sol()
{
/*
delete[] bb;
delete[] bw;
delete[] bs;
delete[] bp;
delete[] bn;
delete[] be;
delete[] bt;
*/
}
void sol(int times)
{
double temp, p1, p2, p3;
double temp_times = pow(times, 1.0 / MAX_LOOP);
for ( int k = 1; k < MAX_SOL; k++ )
{
temp = temp_times + pow(k, 1.0 / MAX_SOL);
bb[k] = - temp / ( 1. + gAlfa * ( bn[k] + be[k] ) );
bw[k] = - temp / ( 1. + gAlfa * ( bn[k] + bt[k] ) );
bs[k] = - temp / ( 1. + gAlfa * ( be[k] + bt[k] ) );
p1 = gAlfa * ( bb[k] * bn[k] + bw[k] * bn[k] );
p2 = gAlfa * ( bb[k] * be[k] + bs[k] * be[k] );
p3 = gAlfa * ( bw[k] * bt[k] + bs[k] * bt[k] );
bp[k] = 1. / ( temp + p1 + p2 + p3 - bb[k] * bt[k]
- bw[k] * be[k] - bs[k] * bn[k] + gSmall );
bn[k] = ( - temp - p1 ) * bp[k];
be[k] = ( - temp - p2 ) * bp[k];
bt[k] = ( - temp - p3 ) * bp[k];
}
}
(2)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <ctime>
using namespace std;
const int MAX_SOL = 10000000;
const int MAX_LOOP = 10;
const double gAlfa = 0.92;
const double gSmall = 1.0E-30;
//double bb[MAX_SOL], bw[MAX_SOL], bs[MAX_SOL], bp[MAX_SOL], bn[MAX_SOL], be[MAX_SOL], bt[MAX_SOL];
double *bb, *bw, *bs, *bp, *bn, *be, *bt;
void new_sol();
void delete_sol();
void sol(int );
void main()
{
ofstream ofilout( "output.dat" );
if (! ofilout) {
cerr << "error: unable to open input file: "
<< "output.dat" << endl;
exit(0);
}
new_sol();
clock_t t_start = clock();
for ( int i = 0; i < MAX_LOOP; i++)
{
sol(i);
}
clock_t t_finish = clock();
delete_sol();
ofilout << setiosflags(ios::fixed) << setprecision(10);
ofilout << " Program takes CPU time "
<< static_cast<double>(t_finish - t_start) / CLOCKS_PER_SEC
<< " seconds." << endl;
ofilout.close();
}
void new_sol()
{
bb = new double[MAX_SOL];
bw = new double[MAX_SOL];
bs = new double[MAX_SOL];
bp = new double[MAX_SOL];
bn = new double[MAX_SOL];
be = new double[MAX_SOL];
bt = new double[MAX_SOL];
for ( int i = 0; i < MAX_SOL; i++ )
{
bb[i] = 0.0;
bw[i] = 0.0;
bs[i] = 0.0;
bp[i] = 0.0;
bn[i] = 0.0;
be[i] = 0.0;
bt[i] = 0.0;
}
}
void delete_sol()
{
delete[] bb;
delete[] bw;
delete[] bs;
delete[] bp;
delete[] bn;
delete[] be;
delete[] bt;
}
void sol(int times)
{
double temp, p1, p2, p3;
double temp_times = pow(times, 1.0 / MAX_LOOP);
for ( int k = 1; k < MAX_SOL; k++ )
{
temp = temp_times + pow(k, 1.0 / MAX_SOL);
bb[k] = - temp / ( 1. + gAlfa * ( bn[k] + be[k] ) );
bw[k] = - temp / ( 1. + gAlfa * ( bn[k] + bt[k] ) );
bs[k] = - temp / ( 1. + gAlfa * ( be[k] + bt[k] ) );
p1 = gAlfa * ( bb[k] * bn[k] + bw[k] * bn[k] );
p2 = gAlfa * ( bb[k] * be[k] + bs[k] * be[k] );
p3 = gAlfa * ( bw[k] * bt[k] + bs[k] * bt[k] );
bp[k] = 1. / ( temp + p1 + p2 + p3 - bb[k] * bt[k]
- bw[k] * be[k] - bs[k] * bn[k] + gSmall );
bn[k] = ( - temp - p1 ) * bp[k];
be[k] = ( - temp - p2 ) * bp[k];
bt[k] = ( - temp - p3 ) * bp[k];
}
}
int main() {
int a[10];
int *b = new int[10];
a[2] = 10;
b[2] = 10;
delete []b;
}
a[2] = 10;
004113E7 mov dword ptr [ebp-24h],0Ah
b[2] = 10;
004113EE mov eax,dword ptr [b]
004113F1 mov dword ptr [eax+8],0Ah