C++从键盘任意输入一串数字和大小写字母,数字从小到大排序,字母排序为 a < z < A < Z ,整体顺序数字小于字母,并完成图示输出,采用面向对象的思想进行编程。

img


C++从键盘任意输入一串数字和大小写字母,数字从小到大排序,字母排序为 a < z < A < Z ,整体顺序数字小于字母,并完成图示输出,采用面向对象的思想进行编程。

后面接着怎么写的

这道题目涉及到排序和输出两个部分,基于面向对象思想完成的详细代码如下,望采纳

#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;
}