关于文件的读操作和写操作。真的搞不懂
奥利奥小新 2011-06-04 01:55:06 在算法书上给出的一个题目需要由文件input.txt提供输入数据,将计算所得的数输出到文件out.txt.我是不是需要自己编在哪里编写一个文件提供输出,我不知道呢个文件的路径该放在哪里?代码里需要提路径的事对吗?我在百度上查看freopen,看不太懂。。
以下是我自己编的代码,照猫画虎的写了一个文件输入输出,貌似是错的,谁来点播一下我啊。
#define LOCAL
#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;
//转换递增量的函数。
int round(float r) {
return static_cast<int>((r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5));
}
int main(){
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif
int a[]={13, 14 ,94 ,33 ,82 ,25, 59 ,94, 65, 23, 45, 27, 73 ,25, 39, 10 };
int num=sizeof(a)/sizeof(a[0]);
// inc = num/2;//不可以轻易的将递增量用数组的总数目除以2,有可能数目是奇数,那么将得到4.5这样的尴尬数字
int inc=round(static_cast<float>(num/2.0));
cout<<"inc="<<inc<<endl<<endl;
while (inc>0){
for(int i=inc;i<=num-1;++i){ //遍历数组的从第一个递增量开始的每一个元素。
int temp=a[i]; //保存该元素
int j=i; //记录该元素的下角标
while((j>=inc) && (a[j-inc]>temp)){
//当角标J-INC>=0时,并且所保存的数字比希尔排序递增量所对应的J-INC,大时进行循环移动。
a[j]=a[j-inc];
j=j-inc;
}
//将所寄存的数字插入到A【j】当中
a[j]=temp;
}
inc=round(static_cast<float>(inc/2.2));
cout<<"inc="<<inc<<endl<<endl;
}
cout<<"the shelled sort is:"<<endl;
for(int i=0;i<num;++i)
cout<<a[i]<<" ";
cout<<endl;
system("pause");
return 0;
}