gpt4 book ai didi

c++ - 如何将值输入到已经定义的数组中?

转载 作者:太空宇宙 更新时间:2023-11-04 15:30:05 25 4
gpt4 key购买 nike

编写一个程序,将 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];
}

oddeven 的末尾总共会有 N (10) 个元素“浪费”(有一些未知的分布), 但谁在乎?十个自动存储 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

( live demo )

关于c++ - 如何将值输入到已经定义的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56360537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com