?? d7r7.cpp
字號:
#include "iostream.h"
#include "fstream.h"
#include "stdlib.h"
#include "string.h"
void indexx(int n, double arrin[], int indx[])
{
int i,j,l,ir,indxt;
double q;
for (j = 1; j<=n; j++)
{
indx[j] = j;
}
if (n == 1)
{
return;
}
l = int(n / 2 + 1);
ir = n;
do
{
if (l > 1)
{
l = l - 1;
indxt = indx[l];
q = arrin[indxt];
}
else
{
indxt = indx[ir];
q = arrin[indxt];
indx[ir] = indx[1];
ir = ir - 1;
if (ir == 1)
{
indx[1] = indxt;
return;
}
}
i = l;
j = l + l;
while (j <= ir)
{
if (j < ir)
{
if (arrin[indx[j]] < arrin[indx[j + 1]])
{
j = j + 1;
}
}
if (q < arrin[indx[j]])
{
indx[i] = indx[j];
i = j;
j = j + j;
}
else
{
j = ir + 1;
}
}
indx[i] = indxt;
}while(1);
}
void sort3(int n, double ra[], double rb[], double rc[], double wksp[], int iwksp[])
{
int j;
indexx(n, ra, iwksp);
for (j=1; j<=n; j++)
{
wksp[j] = ra[j];
}
for (j=1; j<=n; j++)
{
ra[j] = wksp[iwksp[j]];
}
for (j=1; j<=n; j++)
{
wksp[j] = rb[j];
}
for (j=1; j<=n; j++)
{
rb[j] = wksp[iwksp[j]];
}
for (j=1; j<=n; j++)
{
wksp[j] = rc[j];
}
for (j=1; j<=n; j++)
{
rc[j] = wksp[iwksp[j]];
}
}
void main()
{
//program d7r7
//driver for routine sort3
int i,j,nlen = 64;
double a[65], b[65], c[65], wksp[65];
int indx[65];
char amsg[65], bmsg[65], cmsg[65];
char buff[256];
char *msg1 = "I'd rather have a bottle in front";
char *msg2 = " of me than a frontal lobotomy.";
cout<<"Original message:"<<endl;
cout<<endl;
strcpy(buff,msg1);
strcat(buff,msg2);
for (j = 1; j<=64; j++)
{
//buff=new char[strlen(strcat(msg1,msg2))];
amsg[j] = buff[j-1];
cout<<amsg[j];
}
cout<<endl;
//read array of random numbers
ifstream fin;
fin.open("d:\\vc常用數值算法集\\data\\tarray.dat",ios::in|ios::nocreate);
if (!fin)
{
cerr<<"could not open d:\\vc常用數值算法集\\data\\tarray.dat"<<endl;
exit(1);
}
for (i=1; i<=nlen; i++)
{
fin>>a[i];
}
fin.close();
//create array b and array c
for (i = 1; i<=nlen; i++)
{
b[i] = i;
c[i] = nlen + 1 - i;
}
//sort array a while mixing b and c
sort3(nlen, a, b, c, wksp, indx);
//scramble message according to array b
for (i = 1; i<=nlen; i++)
{
j = (int)b[i];
bmsg[i] = amsg[j];
}
cout<<endl;
cout<<"Scrambled message:"<<endl;
cout<<endl;
for (j = 1; j<=nlen; j++)
{
cout<<bmsg[j];
}
cout<<endl;
//unscramble according to array c
for (i = 1; i<=nlen; i++)
{
j = (int)c[i];
cmsg[j] = bmsg[i];
}
cout<<endl;
cout<<"Mirrored message:"<<endl;
cout<<endl;
for (j = 1; j<=nlen; j++)
{
cout<<cmsg[j];
}
cout<<endl;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -