| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 649 人关注过本帖
标题:[讨论]随便编了个程序,有些问题,欢迎批评指正
只看楼主 加入收藏
medicihophy
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2007-7-28
收藏
 问题点数:0 回复次数:5 
[讨论]随便编了个程序,有些问题,欢迎批评指正

这是代码,其实意思很简单,按照置换群的概念,既然{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;
}

搜索更多相关主题的帖子: 批评 欢迎 
2007-07-30 18:18
cy_forever
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-3-4
收藏
得分:0 

有一个明显的问题就是数组作为函数参数的调用,你不太清楚,如
void change(const char a,int b[8]),调用数组,应该指出数组的
大小,因为函数调用数组是一种类似于“传引用调用”,它把数组的
地址传给函数,并不能传递数组的大小。
应改为:
void change(const char a,int b[],int size),size指定b[]的大小。
我试着编译你的程序,错误很多,你还是再根据提示修改修改。

2007-07-30 21:25
medicihophy
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2007-7-28
收藏
得分:0 
请注意我这里的数组大小全部都是8,没必要再传个大小吧,而且编译应该没有什么大问题

2007-07-30 21:34
dhj1985
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-9-25
收藏
得分:0 
你知道c/c++一个程序是从开始执行的吗???
从main开始
我没看懂change changeback swap函数有什么用
在主函数中根本没用上
只有调用才实现它们的作用
还有fopen是打开文件 你主函数上只是一个字符组而已
不是用了file**就觉得是文件了
还是先看看c语言吧
我看你c++只会用cout cin
没用明白c++真正的内涵
2007-09-27 01:07
远去的列车
Rank: 1
等 级:新手上路
威 望:2
帖 子:205
专家分:0
注 册:2007-8-7
收藏
得分:0 
楼上的看清再说话:主函数里调用了Tr函数,Tr函数里又调用了change/swap/changeback函数

C++学习
2007-09-27 08:05
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
4楼

不过那个大小还是该做个参数,偶不爱用全局变量!

Fight  to win  or  die...
2007-09-27 11:20
快速回复:[讨论]随便编了个程序,有些问题,欢迎批评指正
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017924 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved