注册 登录
编程论坛 C++教室

用类写的一个简单程序 为什么有问题?

zhao9302 发布于 2007-10-15 17:55, 1109 次点击

#include<iostream>
#include<string>

using namespace std;

class sort
{
private:
string str[5];
int i,j;
string temp;
public:
void setdate();
void sort();
void print();
};

void sort::setdate()
{
cout<<"请输入5个字符串:"<<endl;
for(i=0;i<5;i++)
cin<<str[i];
}

void sort::sort()
{
for(i=0;i<5;i++)
for(j=0;j<4-i;j++)
{
if(str[i]>str[j])
{
temp=str[i];
str[j]=str[i];
str[i]=temp;
}
}
}

void sort::print()
{
cout<<"排序后的字符串:";
for(i=0;i<5;i++)
cout<<str[i]<<'\t';
}


int main()
{
sort s1;
s1.setdate();
s1.sort();
s1.print();
return 0;
}

就是输入5个字符串 按从小到达排序 我怎么看都找不到错误 用编译器找的错误都觉得没问题
提示了一大堆错误


[此贴子已经被作者于2007-10-15 17:57:04编辑过]

15 回复
#2
aipb20072007-10-15 18:18
cin >>
cout <<


还有你的排序看不懂!
#3
reedleaf2007-10-15 19:28

// ex21.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


#include<iostream>
#include<string>

using namespace std;

class sort
{
private:
string str[5];
int i,j;
string temp;
public:
void setdate();
// void sort();//不能 有返回值 包括void
sort();
void print();
};

void sort::setdate()
{
cout<<"请输入5个字符串:"<<endl;
for(i=0;i<5;i++)
//cin<<str[i];
cin>>str[i];
}

//void sort::sort()
sort::sort()
{
for(i=0;i<5;i++)
for(j=0;j<4-i;j++)
{
if(str[i]>str[j])
{
temp=str[i];
str[j]=str[i];
str[i]=temp;
}
}
}

void sort::print()
{
cout<<"排序后的字符串:";
for(i=0;i<5;i++)
cout<<str[i]<<'\t';
}


int main()
{
sort s1;
s1.setdate();
// s1.sort();//不能调用

s1.print();
return 0;
}

你的错误我都“//”标出来了

#4
reedleaf2007-10-15 19:29

修改后可以运行了
你可以看一下是不是你想要的结果

#5
zhao93022007-10-15 20:00

晕了 我用的是冒泡排序 为什么没排?

#6
reedleaf2007-10-15 20:02

等会我再帮你看看
现在吃饭去了

#7
zhao93022007-10-15 20:10
谢谢拉
#8
aipb20072007-10-15 20:10
说了你那不是冒泡排序,根本就不能排

你可以去搜索下冒泡的算法逻辑。

就在这个版也有。

[此贴子已经被作者于2007-10-15 20:12:05编辑过]

#9
reedleaf2007-10-15 20:17

#include<iostream>
#include<string>

using namespace std;

class sort
{
private:
char str[5];
int i,j;
char temp;
public:
void setdate();
// void sort();
sort();
void print();
};

sort::sort()
{
cout<<"请输入5个字符串:"<<endl;
for(i=0;i<5;i++)
//cin<<str[i];
cin>>str[i];
}

//void sort::sort()
void sort::setdate()
{
for(i=0;i<5;i++)
//for(j=0;j<4-i;j++)
for(j=i+1;j<5;j++)
{
if(str[i]>str[j])
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
}

void sort::print()
{
cout<<"排序后的字符串:";
for(i=0;i<5;i++)
cout<<str[i]<<'\t';
}


int main()
{
sort s1;
s1.setdate();
// s1.sort();//

s1.print();
return 0;
}

太多错误
只能在你的基础上改改
现在可以实现功能了
但是算法很不好

需要一起努力啊!!!

#10
zhao93022007-10-15 20:23
我也发现错误太多了
而刚刚你改了这个算法 我运行结果本是要 将 5个字符串排序的 结果成了 就是排给输入的单词

而我找网上找了个冒泡排序
for(i=0;i<N;i++)
{
for(j=0;j<N-1-i;j++)
{
if(grade[j]<grade[j+1])
{
temp=grade[j+1];
grade[j+1]=grade[j];
grade[j]=temp;
}
}
}


我按这个方法改了 同样是不排序
#11
zhao93022007-10-15 20:44
对了 我想问下 为什么我输出的不是字符串?
#12
reedleaf2007-10-15 20:47
排序的时候没有你这样判断字符串了

我把你的string改成了char
#13
reedleaf2007-10-15 20:48

字符串用strcmp吧

#14
zhao93022007-10-15 20:50
没呐 我没注意看
我看书上的就是这样判断的
只是我把他用类改了下 顺便用我自己记忆的冒泡排序^^^^
#15
zhao93022007-10-16 15:12

我先在把程序改成这样了
编译的过去
但是运行时候 当输完数字就出问题了 为什么啊
我的编译器是 VC++6.0

#include<iostream>
#include<string>

using namespace std;

class sort
{
private:
string str[5];
int i,j;
string temp;
public:
void setdate();
sort();
void print();
};

sort::sort()
{
cout<<"请输入5个字符串:"<<endl;
for(i=0;i<5;i++)

cin>>str[i];
}

void sort::setdate()
{
for(i=0;i<4;i++)
for(j=0;j<5-i;j++)
{
if(str[j]>str[j+1])
{
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
}
}

void sort::print()
{
cout<<"排序后的字符串:";
for(i=0;i<5;i++)
cout<<str[i]<<'\t';
}


int main()
{
sort s1;
s1.setdate();
s1.print();
return 0;
}

#16
zhao93022007-10-16 20:53

咋没人来看看呐

1