c++ - 首先打印给定序列中的所有数字,然后使用 Array 打印所有字符和其他符号
问题描述
如何首先打印给定序列中的所有数字,然后仅使用数组而不是 C++ 中的字符串打印所有字符和字母???
例如
intput: 5 (size of array) --> a 1 2 r 4
output: 1 2 4 a r
input: 10 --> a s d @ # $ 7 8 9 1 0
output: 7 8 9 1 0 a s d @ # $
#include <iostream>
int main()
{
int n, c, j = 0, m = 0, a = 0;
char arr[1000];
std::cin >> n;
for (int i = 0; i < n; ++i)
{
std::cin >> arr[i];
std::cout << arr[i] << " ";
}
}
解决方案
如果您现在想坚持使用循环,只需使用cctypefor
标头中的一些帮助程序来清理您的代码:
#include <cctype>
for (int i = 0; i < n; i++) {
if (std::isdigit(arr[i]))
std::cout << (char)arr[i] << ' ';
}
for (int i = 0; i < n; i++) {
if (std::isalpha(arr[i]))
std::cout << (char)arr[i] << ' ';
}
for (int i = 0; i < n; i++) {
if (!std::isdigit(arr[i]) && !std::isalpha(arr[i]))
std::cout << (char)arr[i] << ' ';
}
这段代码绝对不是最优的,正如你可以从其他人的更优雅的解决方案中看到的那样std::partition
。一旦您对自己的技能更有信心,请考虑尝试一种算法方法:标准库有很多选择。std::partition
在这里工作得很好,但您也可以尝试使用排序或删除算法。所有这些功能需要的是您的数据范围(在您的情况下,&arr[0]
或者arr
是范围的开始,并且arr + n
是结束),通常是一些函数来指定您希望如何对数据进行分区、排序等。
推荐阅读
- javascript - Promise 返回 {} 而不是 ImageData (TypeScript)
- javascript - 如何使用带有不同模块的 webpack 4 拆分代码
- php - base64 图像上传为 0 字节,file_put_contents 在 php 中返回 false
- database - 如何使用模型在 Phalcon 框架中转储查询
- r - R 遍历文件并写入结果
- android - Android 下载管理器 api 下载失败(“下载失败”)
- amazon-web-services - 如何通过 aws-cli 更新目录和 s3 存储桶?
- button - 如何使用按钮在 Google 应用程序制造商中将表格导出为 Google 表格
- javascript - 验证 contenteditable 在输入时而不是在单击时
- youtrack - 筛选问题已在 6 周前在 YouTrack 板上解决