后面接着怎么写的
这道题目涉及到排序和输出两个部分,基于面向对象思想完成的详细代码如下,望采纳
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
// 把输出视作网格里的*,用于存储网格中单个单元的类
class Cell {
private:
char value; // 该单元格的值
public:
// 构造函数来初始化单元格的值
Cell(char val) : value(val) {}
// 获取函数来获取单元格的值
char getValue() const { return value; }
};
// 用于存储单元格的类
class Grid {
private:
vector<vector<Cell>> cells; // 用来存储网格中的单元格的2D向量
int width; // 网格的宽度
int height; // 网格的高度
public:
// 用于初始化网格的构造函数
Grid(int w, int h) : width(w), height(h) {
// 用空单元格初始化网格
cells = vector<vector<Cell>>(h, vector<Cell>(w));
}
// 将一个单元格添加到网格的特定位置
void addCell(int x, int y, Cell cell) { cells[y][x] = cell; }
// 打印网格
void print() const {
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
cout << cells[y][x].getValue() << " ";
}
cout << endl;
}
}
};
int main() {
// 读取键盘输入
string input;
cin >> input;
// 对输入的字符串进行排序
sort(input.begin(), input.end(), [](char a, char b) {
// 首先,将数字从小到大排序
if (isdigit(a) && isdigit(b)) {
return a < b;
}
// 然后,将字母按a < z < A < Z排序
if (isalpha(a) && isalpha(b)) {
return a < b;
}
// 最后,将数字按小于字母的方式排序
return isdigit(a);
});
// 以适当的尺寸初始化网格
Grid grid(7, 4);
// 用排序后的输入值填充网格,从上到下,从左到右。
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 7; x++) {
if (y < 3 - x || x > 3 + y) {
// 如果该单元格不是*图案的一部分,就用一个空格字符填充它
grid.addCell(x, y, Cell(' '));
} else {
// 否则,用排序后的输入字符串中的下一个字符填充它
grid.addCell(x, y, Cell(input[x + y - 3]));
}
}
}
// 打印网格
grid.print();
return 0;
}
#include<stdio.h>
#include <string.h>
int main()
{
char s[100],a[1000] = {0},A[1000] = {0},c;
int num[1000]={0},n=0,a1=0,A1=0,i,j,t;
do
{
scanf("%s",s);
if(strlen(s) == 1)
{
if(s[0] >= 'a' && s[0] <= 'z')
a[a1++] = s[0];
else if(s[0] >= 'A' && s[0] <= 'Z')
A[A1++] = s[0];
else if(s[0] >= '0' && s[0] <= '9')
num[n++] = s[0] - '0';
}
else
{
for(i=0;i<strlen(s);i++)
num[n] = num[n]*10 + s[i] - '0';
n++;
}
}while(getchar() != '\n');
//
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(num[j] > num[j+1])
{
t = num[j];
num[j] = num[j+1];
num[j+1] = t;
}
}
for(i=0;i<a1-1;i++)
for(j=0;j<a1-i-1;j++)
{
if(a[j] > a[j+1])
{
c = a[j];
a[j] = a[j+1];
a[j+1] = c;
}
}
for(i=0;i<A1-1;i++)
for(j=0;j<A1-i-1;j++)
{
if(A[j] > A[j+1])
{
c = A[j];
A[j] = A[j+1];
A[j+1] = c;
}
}
for(i=0;i<n;i++)
printf("%d ",num[i]);
for(i=0;i<a1;i++)
printf("%c ",a[i]);
for(i=0;i<A1;i++)
printf("%c ",A[i]);
//
return 0;
}