读书人

解决一个C++程序

发布时间: 2012-03-05 11:54:02 作者: rapoo

求助解决一个C++程序
要求任意从键盘输入几个字符,把其中是字母的按顺序排列成一个三角形,其他的如:字符,数字,则用*号代替。
比如输入:ad3b <zk{g
则程序内部先进行排序成:ab3d <gk{z
最后输出为: a
b*d
*gk*z

[解决办法]
#include <iostream.h>
#include <stdlib.h>
void main()
{
int i, j;
for(i=8;i> 0;i--)
{
for(j=1;j <=i-1;j++)
cout < < " ";
for(j=1;j <=9-i;j++)
cout < < "* " < < " ";
cout < <endl;
system( "pause ");
}
}
可参考下这个 ,别人的
[解决办法]
#include <iostream>
#include <vector>

using namespace std;

int main()
{
char c;
int i,j,k;
vector <char> vc;
while(cin.get(c), c != '\n ')
{
if( 'a ' <= c && c <= 'z ')
vc.push_back(c);
else
vc.push_back( '* ');
}
for(i=0;i <vc.size();i++)
{
if(vc[i] != '* ')
break;
}

for(; i <vc.size()-1; i++)
{
k = i;
for(j=i+1; j <vc.size(); j++)
if(vc[j]!= '* ' && vc[j] <vc[k])
k = j;
if(k != i)
{
int temp = vc[i];
vc[i] = vc[k];
vc[k] = temp;
}
}
k = 0;
for(i=1;k <vc.size();i++)
{
for(j=vc.size(); j> =i; j--)
{
cout < < " ";
}
for(j=i;j <=2*i-1 && k <vc.size();j++)
{
cout < <vc[k];
k++;
}
cout < < "\n ";
}
system( "pause ");
return 0;
}

VC++6.0编译通过
[解决办法]
for(i=0;i <vc.size();i++)
{
if(vc[i] != '* ')
break;
}
我感觉这行代码多余的

读书人网 >C++

热点推荐