c++ - 如何将值输入到已定义的数组中?
问题描述
编写一个程序,将 10 个给定数字输出到两行中,一行用于奇数,一行用于偶数。使用数组。
在为用户输入的 10 个数字声明了一个输入数组后,我尝试为奇数和偶数值声明单独的数组,这些数组稍后将通过 for 循环进行排序。
当我需要将这些值n分配给奇数或偶数数组时,我会卡住。
int input[10];
int odd[]{};
int even[]{};
int n;
for(n=0;n<10;n++)
{
if ((input[n])%2==0)
{
odd[n] = n;
}
else
{
even[n] = n;
}
解决方案
您不需要为此进行动态分配。我们可以只制作两个数组并根据需要填充它们。
static constexpr std::size_t N = 10;
const int input[N] = { /* user input here */ };
int odd[N] = {};
int even[N] = {};
std::size_t countOdd = 0;
std::size_t countEven = 0;
for (std::size_t i = 0; i < N; i++)
{
if (input[i] % 2 == 0)
even[countEven++] = input[i];
else
odd[countOdd++] = input[i];
}
在结尾和总共会有N
(10)个元素“浪费” (有一些未知的分布),但谁在乎呢?十个自动存储!没什么。只要我们跟踪我们“关心”的赔率和偶数,一切都很好。odd
even
int
现在对于两行输出:
for (std::size_t i = 0; i < countOdd; i++)
std::cout << odd[i] << ' ';
std::cout << '\n';
for (std::size_t i = 0; i < countEven; i++)
std::cout << even[i] << ' ';
std::cout << '\n';
简单的!
我std::size_t
在适当的地方使用了数组索引,而不是int
,但如果你愿意,你现在可以忽略它。我还修复了您的模运算,并且您存储的是偶数/奇数值的索引,而不是值本身。
完整程序示例:
#include <iostream>
#include <cstddef> // for std::size_t
int main()
{
static constexpr std::size_t N = 10;
const int input[N] = { 1,5,9,14,3,99,82,42,43,70};
int odd[N] = {};
int even[N] = {};
std::size_t countOdd = 0;
std::size_t countEven = 0;
for (std::size_t i = 0; i < N; i++)
{
if (input[i] % 2 == 0)
even[countEven++] = input[i];
else
odd[countOdd++] = input[i];
}
for (std::size_t i = 0; i < countOdd; i++)
std::cout << odd[i] << ' ';
std::cout << '\n';
for (std::size_t i = 0; i < countEven; i++)
std::cout << even[i] << ' ';
std::cout << '\n';
}
// g++ -std=c++17 -O2 -Wall -pedantic -pthread main.cpp && ./a.out
// 1 5 9 3 99 43
// 14 82 42 70
(现场演示)
推荐阅读
- amazon-ses - 在 Amazon SES 模板中使用样式标签设置 html 样式
- asp.net - 如何在 ASP.NET 和 VB.NET 中使用 Open XML 返回文件
- spring-boot - @Value 注释在 AbstractAuthenticationProcessingFilter 过滤器中返回空值
- elasticsearch - Elasticsearch 6.3 绑定或发布到非环回地址,强制执行引导检查
- sublimetext3 - 如何在 Sublime Text 3 中一次编辑多个文件
- html - 在 Safari 和 Chrome 中格式化
- javascript - puppeteer 卡在弹出窗口上
- c# - 如果打印机不是默认设置,PrintDialog 不会拉取 Windows 中设置的打印机的纸张大小
- python-2.7 - python中的Jaccard索引,用于使用gensim的语料库
- mysql - mysql 5.7 数据目录中有文件