标题:[求助]从键盘上输入N个字符串用strcmp比较大小,并从小到大输出
只看楼主
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
得分:0 

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


#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-10 14:52
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
得分:0 
if(strcmp(a[i],a[i+1])>0) a[i].swap(a[i+1]); //有点问题..不知怎么错的
原形是:strcmp(const char*, const char*);
所以必须传地址。

谷底深深行 ,峰顶漫漫步......@_@
2006-11-10 14:57
坦然
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-100885-1-1.html




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

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