| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2225 人关注过本帖
标题:[求助]从键盘上输入N个字符串用strcmp比较大小,并从小到大输出
取消只看楼主 加入收藏
坦然
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-4
收藏
 问题点数:0 回复次数:6 
[求助]从键盘上输入N个字符串用strcmp比较大小,并从小到大输出

请指点指点小弟

#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
using namespace std;
typedef vector<vector<char> > Mat;
Mat input()
{ Mat a;
char ia;vector<char> b;
while(cin>>ia&&ia!='$')
b.push_back(ia);
a.push_back(b);
return a;
}
void mysort( Mat& a)
{
for(int pass=1;pass<a.size();++pass)
for(int i=0;i<a.size()-pass;++i)
if(strcmp(a[i],a[i+1])>0) a[i].swap(a[i+1]); //有点问题..不知怎么错的
}
void print( Mat& a)
{
for(int i=0;i<a.size();++i)
for(int j=0;j<a[i].size();++j)
cout<<a[i][j];
cout<<"\n";
}
void main()
{
Mat a=input();
mysort(a);
print(a);
}


给小弟修改一下谢谢了...如有另外的方法也行..告诉小弟一下

[此贴子已经被作者于2006-11-5 16:27:28编辑过]

搜索更多相关主题的帖子: strcmp 字符 键盘 从小到大 输出 
2006-11-05 16:13
坦然
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-4
收藏
得分:0 
帮帮小弟呀
2006-11-05 17:38
坦然
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-4
收藏
得分:0 

谢谢了...可是还有错误如下...谁还帮我一下
error C2664: 'strcmp' : cannot convert parameter 1 from 'class std::vector<char,class std::allocator<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

2006-11-05 21:33
坦然
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-4
收藏
得分:0 
以下是引用余来在2006-11-6 13:26:00的发言:
你跟该成
std::vector<char>::iterator it;
it=a.begin();
然后用*it去比较.比较后在it++,应该可以

不太明白..小弟刚学C++..好多都不懂..能调试后改的给小弟回上吗?

2006-11-07 17:10
坦然
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-4
收藏
得分:0 

谢谢你们..不过不知为什么编译没有错...但是程序没有达到"并从小到大输出"目的:
那位在帮小弟改一下算法....

2006-11-10 12:52
坦然
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-4
收藏
得分:0 
以下是引用olivezhang在2006-11-10 14:52:09的发言:

帮你简化了一下,这样简单:


#include <iostream>
#include <vector>

using namespace std;

vector<char> input()
{
char ia;
vector<char> b;
while(cin>>ia&&ia!='$')
b.push_back(ia);
return b;
}

void print( const vector<char>& a)
{
cout << endl;
for (int i=0; i<a.size(); i++)
{
cout << a[i] << " ";
}
cout << endl;
}

void main()
{
vector<char> a=input();

int i=0;
print(a);

for(int pass=1;pass<a.size();++pass)
{
for(int i=0;i<a.size()-pass;++i)
{
if(strcmp(&a[i], &a[i+1])>0)
{
/*
char tmp;
tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
*/
swap(a[i], a[i+1]);
}
}
}

print(a);
}

.谢谢...可以运行但是单个字符的比较,,,不是串的比较输出..从小到大的输出!

2006-11-11 15:21
坦然
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-4
收藏
得分:0 
这儿编了另一种方法:从键盘输入n个字符串,并按从小到大输出?
#include<iostream>
#include<vector>
#include<conio.h>
#include <sstream>
using namespace std;
void main()
{
int n;
string temp;
char ch;
do{
cout<<"\n\n\tPlease enter amount n(n>1)=";
cin>>n;
while((n<2))
{
cout<<"\n\t\t\a\aInput Error!Please enter amount n(n>1)=";
cin>>n;
}
vector<string> a(n); //按需创建;
cout<<"\tPlease enter "<<n<<" string :\n";
for(int i=0;i<n;i++)
{
cout<<"\ta["<<i<<"]=";
cin>>a[i];
}
for(i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
cout<<"\tOutput the sorted number :\n";
for(i=0;i<n;i++)
cout<<"\t\ta["<<i<<"]="<<a[i]<<endl;
cout<<"\n\t\tContinue!?? (y/n)";
ch=getch();
while(!(ch=='n'||ch=='N'||ch=='y'||ch=='Y'))
{
cout<<"\n\t\t\a\aInput Error!Continue!?? (y/n)";
ch=getch();
}
}while(ch=='y'||ch=='Y');
cout<<"\n\n\t";
}
..以前的那个,,可以改再帮我改一下
2006-11-11 15:29
快速回复:[求助]从键盘上输入N个字符串用strcmp比较大小,并从小到大输出
数据加载中...
 
   



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

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