找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 386|回复: 1

[讨论]随便编了个程序,有些问题,欢迎批评指正

[复制链接]
发表于 2009-11-3 01:33:46 | 显示全部楼层 |阅读模式 IP:江苏扬州
这是代码,其实意思很简单,按照置换群的概念,既然{4,3,7,1,5,2,6,8}通过几次自身置换能变回本身,
那么应用与字符,应该也可以,所以就这样作了,结果发现最终的文件内容和当初的有些出入,应该是
程序有些问题,一下子没看出来就贴出来大家看看:这个应该可以引申,虽然没什么意思,好玩而已!
本身没有对代码作优化,欢迎大家批评指正!
#include<iostream>
#include<cmath>
using namespace std;
void change(const char a,int b[8])
{
int temp;
temp=(int)a;
for(int i=0;i<8;i++)
{
b[7-i]=temp%2;
temp/=2;
}
}
char changeback(int b[8])
{
int sum=0;
for(int i=0;i<8;i++)
{
sum+=b[i]*pow(2,7-i);
}
return (char)sum;
}
int Key[8]={4,3,7,1,5,2,6,8};
void swap(int thechar[8])
{
int temp[8];
for(int i=0;i<8;i++)
{
temp[i]=thechar[i];
}
for(i=0;i<8;i++)
{
thechar[i]=temp[Key[i]-1];
}
}
int Tr(char *filefrom,char *fileto)
{
FILE *datafp,*datafp1;
if((datafp=fopen(filefrom,"rt"))==NULL)
{
cout<<"cannot open!"<<endl;
exit(1);
}
if((datafp1=fopen(fileto,"wt"))==NULL)
{
cout<<"cannot open!"<<endl;
exit(1);
}
int theanswer[8];
char temp;
while(fscanf(datafp,"%c",&temp)!=EOF)
{
change(temp,theanswer);
swap(theanswer);
temp=changeback(theanswer);
fprintf(datafp1,"%c",temp);
}
fclose(datafp);
fclose(datafp1);
return 0;
}
int main()
{
char filename1[]="source";
char filename2[]="temp";
int times;
for(times=0;times<4;times++)
{
Tr(filename1,filename2);
strcpy(filename1,filename2);
strcat(filename2,"2");
}

return 0;
}
发表于 2009-11-3 01:33:47 | 显示全部楼层 IP:江苏扬州
有一个明显的问题就是数组作为函数参数的调用,你不太清楚,如
void change(const char a,int b[8]),调用数组,应该指出数组的
大小,因为函数调用数组是一种类似于“传引用调用”,它把数组的
地址传给函数,并不能传递数组的大小。
应改为:
void change(const char a,int b[],int size),size指定b[]的大小。
我试着编译你的程序,错误很多,你还是再根据提示修改修改。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 05:32 , Processed in 0.292877 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表