乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 怎样用<em>excel</em>逐板计算法求精馏塔理论<em>塔板数</em

怎样用<em>excel</em>逐板计算法求精馏塔理论<em>塔板数</em

作者:乔山办公网日期:

返回目录:excel表格制作


这个到底是什么问题........

我这里倒是有HUFFMAN法的文件压缩过程:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<math.h>

struct htnode
{
char ch;
int weight,parent,lchild,rchild;
};
struct hc
{
char *code;
char word;
int size;
};

void select(struct htnode * ht,int n,int& s1, int& s2)
{
int small1=9999, small2=9999,i;
for(i=1;i<=n-1;i++)
{
if(ht[i].weight<small1&&ht[i].parent==0)
{
small1=ht[i].weight;
s1=i;
}
++i;
if(ht[i].weight<small2&&ht[i].parent==0)
{
small2=ht[i].weight;
s2=i;
}
}
}

void reduce()
{
FILE *fpin,*fpout;
int cut[32768];
int i,k;
char flag;
double j=0;
for(i=0;i<=32768;i++)
cut[i]=0;
fpin=fopen("code.txt","r");
fpout=fopen("reduce.txt","wb");
i=0;
while(fread(&flag,sizeof(char),1,fpin))
{

if(flag=='1')
{
cut[i]=(cut[i])|(int)(pow(2,(14-j)));
}
j=j+1;
if(j==15)
{
j=0;
i++;
}
}
for(k=0;k<=i;k++)
{
fwrite(&cut[k],sizeof(int),1,fpout);
}
printf("\n");
fclose(fpin);
fclose(fpout);
}

void unreduce()
{
FILE *fpin;
fpin=fopen("reduce.txt","r");
double j=0;
int flag,uncut[32768],k=0,i;
while(fread(&flag,sizeof(int),1,fpin))
{

for(j=0;j<=14;j=j+1)
if(flag&(int)(pow(2,(14-j))))
uncut[k++]=1;
else
uncut[k++]=0;
}
for(i=0;i<k-15;i++)
printf("%d",uncut[i]);
fclose(fpin);
}

void translate(struct hc *hcc,int n)
{
int i,j,k;
FILE *fpin,*fpout;
char text[32767];
for(k=0;k<32767;k++)
text[k]='\0';
k=0;
fpin=fopen("code.txt","r");
fpout=fopen("translate.txt","w");
while(!e69da5e6ba907a686964616f337feof(fpin))
{
text[k++]=fgetc(fpin);
for(i=1;i<=n;i++)
if(strcmp(text,hcc[i].code)==0)
{
fprintf(fpout,"%c",hcc[i].word);
for(j=0;j<k;j++)
text[j]='\0';
k=0;
}
}
fclose(fpin);
fclose(fpout);
}

void huffmancodeing(int w[32768],char word[32767],int n,char text[32767])
{
FILE *fp,*fpp;
fp=fopen("huffmancode.txt","w");
struct hc *hcc;
char *cd;
int i,c,f,start,k=0,s1,s2;
struct htnode *ht;
int m=2*n-1;
if(n<=1) return;
ht=(struct htnode *)malloc(sizeof(struct htnode)*(m+1));
for(i=1;i<=n;i++)
{
ht[i].ch=word[i-1];
ht[i].parent=0;
ht[i].lchild=0;
ht[i].rchild=0;
ht[i].weight=w[ht[i].ch];
}
for(i=1;i<=n;i++)
printf("%c,%d",ht[i].ch,ht[i].weight);
printf("\n");
for(i=n+1;i<=m;i++)
{
ht[i].ch=word[i-n];
ht[i].parent=0;
ht[i].lchild=0;
ht[i].rchild=0;
ht[i].weight=0;
}

for(i=n+1;i<=m;i++)
{
select(ht,i-1,s1,s2);
ht[s1].parent=i;
ht[s2].parent=i;
ht[i].lchild=s1;
ht[i].rchild=s2;
ht[i].weight=ht[s1].weight+ht[s2].weight;
}
hcc=(struct hc *)malloc((n+1)*sizeof(struct hc));
cd=(char *)malloc(n*sizeof(char));
cd[n-1]='\0';
for(i=1;i<=n;i++)
{
start=n-1;
for(c=i,f=ht[i].parent;f!=0;c=f,f=ht[f].parent)
if(ht[f].lchild==c)
cd[--start]='0';
else cd[--start]='1';
hcc[i].code=(char *)malloc((n-start)*sizeof(char));
strcpy(hcc[i].code,&cd[start]);
hcc[i].word=ht[i].ch;
hcc[i].size=n-start-1;
}
free(cd);
for(i=1;i<=n;i++)
fprintf(fp,"%c:%s",hcc[i].word,hcc[i].code);
fclose(fp);
fpp=fopen("code.txt","wb");
while(text[k]!='\0')
{
for(i=1;i<=n;i++)
if(text[k]==hcc[i].word)
{
fwrite(hcc[i].code,sizeof(char)*hcc[i].size,1,fpp);

}
k++;
}
fclose(fpp);
for(i=1;i<=n;i++)
printf("%c:%s\n",hcc[i].word,hcc[i].code);
translate(hcc,n);
reduce();
unreduce();
}

void main()
{
FILE *fpin;
char file[20];
printf("请输入要压缩的文件名\n");
gets(file);
fpin=fopen(file,"r");
int w[32768],i,j,k,m=0,flag,n=0;
for(i=0;i<=32767;i++) w[i]=0;
i=k=0;
char ch,word[32768],text[32768],code[32768];
while(!feof(fpin))
code[m++]=fgetc(fpin);
fclose(fpin);
code[--m]='\0';
m=0;
while(code[m])
{
ch=code[m];
m++;
text[k++]=ch;
flag=0;
w[ch]++;
for(j=0;j<=32767;j++)
if(word[j]==ch)
flag=1;
if(flag==0)
{
word[i]=ch;
n++;
i++;
}

}
word[i]='\0';
text[k]='\0';
huffmancodeing(w,word,n,text);
}

如果你指的是一股进料的普通精馏塔,那么精馏段塔板数是指从冷凝器以下那块顶板开始往下数到进料板上的那块为止。而提馏段指的则是进料板之下的塔板数
我有。。。。。。。。。。

给你I个现成的

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网