南狂小子 2024-07-23 14:07 采纳率: 88.9%
浏览 2
已结题

排序 逗号分隔.C++

题目描述
连续输入 5 个正整数(0<正整数<1001),正整数之间以一个空格隔开,然后
将这五个正整数按照从大到小的顺序输出(输出的正整数之间以一个 英文逗号 隔开)。
输入
连续输入 5 个正整数(0<正整数<1001)分别以一个空格隔开。
输出
按照从大到小的顺序输出且每个正整数之间用一个 英文逗号 隔开。

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2024-07-23 14:07
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    你的代码示例基本符合题目要求,但有一些小的调整可以使得代码更加简洁和高效。以下是一些改进建议:

    1. 输入处理:可以使用std::cin直接读取一行输入,然后使用std::istringstream来分割字符串并存储到数组中。
    2. 数据存储:使用std::vector<int>而不是固定大小的数组,这样可以更灵活地处理不同数量的输入。
    3. 排序处理:使用std::sort函数进行降序排序时,可以指定自定义的比较函数。
    4. 输出格式:使用std::ostringstream来构建输出字符串,这样可以更灵活地控制输出格式。

    以下是改进后的代码示例:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <sstream>
    
    int main() {
        std::vector<int> numbers;
        std::string input;
        
        // 输入处理
        std::getline(std::cin, input);
        std::istringstream iss(input);
        int num;
        while (iss >> num) {
            numbers.push_back(num);
        }
        
        // 确保只处理5个整数
        if (numbers.size() != 5) {
            std::cerr << "Error: Exactly 5 integers are required." << std::endl;
            return 1;
        }
        
        // 排序处理
        std::sort(numbers.begin(), numbers.end(), std::greater<int>());
        
        // 输出格式
        std::ostringstream oss;
        for (size_t i = 0; i < numbers.size(); ++i) {
            oss << numbers[i];
            if (i < numbers.size() - 1) {
                oss << ", ";
            }
        }
        
        std::cout << oss.str() << std::endl;
        
        return 0;
    }
    

    解释

    1. 输入处理:使用std::getline读取整行输入,然后使用std::istringstream分割字符串并存储到numbers向量中。
    2. 数据存储:使用std::vector<int>存储整数,这样可以更灵活地处理不同数量的输入。
    3. 排序处理:使用std::sort函数和std::greater<int>()进行降序排序。
    4. 输出格式:使用std::ostringstream构建输出字符串,然后输出。

    这样编写的代码更加简洁、灵活,并且易于维护。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月27日
  • 已采纳回答 7月23日
  • 创建了问题 7月23日

悬赏问题

  • ¥15 有关类的报错,在模块里调用另一个模块的方法下的变量时出错
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格
  • ¥15 kali linux用wget archive.kali.org/archive-key.asc指令下载签名无效(失败)
  • ¥15 openHarmony 利用c++程序在dayu210开发板上实现拉取RTSP视频流并且在屏幕上显示
  • ¥15 GD32H757的can通信配置
  • ¥20 nist随机数测试的问题
  • ¥20 帮我解决这个项目,thank you各位程序员
  • ¥15 哪位能用ea软件做一下,有偿