求助解决一个C++程序

conanlsf 2007-04-27 02:50:06
要求任意从键盘输入几个字符,把其中是字母的按顺序排列成一个三角形,其他的如:字符,数字,则用*号代替。
比如输入:ad3b<zk{g
则程序内部先进行排序成:ab3d<gk{z
最后输出为: a
b*d
*gk*z
...全文
318 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjq520 2007-04-27
  • 打赏
  • 举报
回复
for(i=0;i<vc.size();i++)
{
if(vc[i] != '*')
break;
}
我感觉这行代码多余的
chenyi3315 2007-04-27
  • 打赏
  • 举报
回复
#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编译通过
goodluckyxl 2007-04-27
  • 打赏
  • 举报
回复
就是输入
然后排序
然后就是替换
然后就是有规律打印
yixiao386 2007-04-27
  • 打赏
  • 举报
回复
#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");
}
}
可参考下这个 ,别人的
simulationz 2007-04-27
  • 打赏
  • 举报
回复
lz没有把问题说清楚,非字母字符需要重新排列吗?
  • 打赏
  • 举报
回复
说实话,没看懂题目要求.
coldplay968 2007-04-27
  • 打赏
  • 举报
回复
这个难度不是很大
多尝试
qhgary 2007-04-27
  • 打赏
  • 举报
回复
a..d.be该怎么打?
a
b*d
e***
??
你给的例子本身就是排好序列的,如果没有排好序列怎么知道*该打在哪里啊?题目说得很不清楚啊
celftj 2007-04-27
  • 打赏
  • 举报
回复
帮顶
多尝试
再有错了,不懂了提上来
CathySun118 2007-04-27
  • 打赏
  • 举报
回复
看数据结构的书,好像有现成的算法
飞哥 2007-04-27
  • 打赏
  • 举报
回复
lz认为有什么难度
就是一个排序,你冒个泡就行了

至于打印看个数了,找个规律

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧