qq水浒金色武将:c++问题~

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 02:05:14
#include<iostream>
#include<fstream>
#include<cstdlib>

using namespace std;
void instructions();
void q(ifstream& in,ofstream& out);
void header(ofstream& out);
void footer(ofstream& out);

char myfile(15),yourfile(15);
ifstream in;
ofstream out;
void main(){

instructions();
header(out);
q(in,out);
footer(out);

}
void instructions(){
cout<<"请创建好你的文件,并在下一步输入你的文件名"<<endl;
}
void q(ifstream& in,ofstream& out){
cout<<"请输入你要读取的文件名"<<endl;
cin>>myfile;
in.open(myfile);
if(in.fail()){
cout<<"读取文件失败"<<endl;
exit(1);
}
cout<<"请输入你要读入的文件名"<<endl;
cin>>yourfile;
out.open(yourfile);
if(out.fail()){
cout<<"写入失败"<<endl;
exit(1);
}
char x;
while(in>>x){
if(isspace(x))
out<<"<br>";
else
out<<x;
}
}
void header(ofstream& out){
out<<"<Html>\n";
out<<"<Title>\n";
out<<"我用C++写的HTML转换程序,李国栋"<<endl;
out<<"</Title>\n";
out<<"</Body>\n";
}

void footer(ofstream& out){
out<<"</Body>\n";
out<<"</Html>"<<endl;
}

错误提示C:\Documents and Settings\gh\My Documents\我的c++\7\Cpp1.cpp(28) : error C2664: 'void __thiscall std::basic_ifstream<char,struct std::char_traits<char> >::open(const char *,int)' : cannot convert parameter 1 from 'char' to 'const char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\Documents and Settings\gh\My Documents\我的c++\7\Cpp1.cpp(35) : error C2664: 'void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::open(const char *,int)' : cannot convert parameter 1 from 'char' to 'const char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

Cpp1.obj - 2 error(s), 0 warning(s)是什么意思~~怎么改~~

变量定义错了:
char myfile(15),yourfile(15);
改成
char myfile[15],yourfile[15];
就OK了

#include <stdio.h>

/*交换两个数*/
void Swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
/*输出一行十个数字*/
void Write(int array[], int begin, int end)
{
for(int i = begin; i <= end; i ++)
// cout <<array[i] << " ";
printf("%d ",array[i]);
printf("\n");
// cout << endl;
}
/*插入排序*/
void InsertionSort(int array[], int begin, int end)
{
int i, j;
int tmp;
for(i = begin+1; i <= end; i ++) /*循环几次就输出几行*/
{
tmp = array[i];
for(j = i-1; j >= begin; j --)
{
if(tmp > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
array[j + 1] = array[j];
else
break;
}
array[j+1] = tmp;
Write(array, begin, end); /*输出排序结果(一行)*/
}
}
/*选择排序*/
void SelectionSort(int array[], int begin, int end)
{
int i, j;
int position;
for(i = begin; i < end; i ++)
{
for(j = i+1, position = i; j <= end; j ++)
{
if(array[j] > array[position]) /*如果要从小到大排序,则改将'>'改为'<'*/
position = j;
}
Swap(array[i], array[position]);
Write(array, begin, end);
}
}
/*冒泡排序*/
void BubbleSort(int array[], int begin, int end)
{
int i, j;
for(i = begin; i < end; i ++)
{
for(j = begin; j <= end - begin -1; j ++)
{
if(array[j+1] > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
Swap(array[j], array[j+1]);
}
Write(array, begin, end);
}
}

/*将原始数组拷贝到要排序的数组,因为有3个排序方法,所以必须保留原始数组,以备其他调用*/
bool Copy(int array1[], int array2[], int n1, int n2)
{
if(n1 != n2)
return false;
else
{
for(int i = 0; i < n1; i ++)
{
array1[i] = array2[i];
}
return true;
}
}
/*主函数*/
void main()
{
/*如果需要输入排序的个数不是10个数,可以将3个地方的10改为你要的个数就可以了*/

int number, i; /*定义2个整型变量*/
int initinal[10], sort[10]; /*定义2个数组,第一个是保存输入的10个数,第2个是用来排序的数组*/

printf("请输入十个要排序的数字:\n");
number = 10; /*排序个数是10个*/

for(i = 0; i < number; i ++)
scanf("%d",&initinal[i]);

printf("从大到小插入排序:\n");
Write(initinal, 0, number-1); /*输出原始十个数据*/
Copy(sort,initinal,number, number); /*将原始数组拷贝到排序数组*/
InsertionSort(sort,0,number-1); /*调用排序函数*/

printf("从大到小选择排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
SelectionSort(sort,0,number-1);

printf("从大到小冒泡排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
BubbleSort(sort,0,number-1);
}