gpt4 book ai didi

c++ - 与整数 vector 相乘并相加

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:23 25 4
gpt4 key购买 nike

编写一个程序,提示用户将数据输入一个整数 vector ,并将第一个 vector 的值赋给另一个整数 vector (通过乘以 8 和递增 100 修改)但顺序相反。例子:我们在第一个 vector 中输入值:

3   8   2   9   11  5  40 100 203 49

那么第二个 vector 的值是:

(49*8 +100) (203*8 +100) (100*8 +100) (40*8 +100) (5*8 +100) (11*8 +100) (9*8 +100)
(2*8 +100) (8*8 +100) (3*8 +100) .

所以这是被问到的问题,但到目前为止我在我的代码中所能做的就是输入整数并对它们进行反向排序但我无法弄清楚如何将数学添加到编码中。(添加 100 次8)

#include <iostream>
using namespace std;

int main(){
int input[500], output[500], count, i;

cout << "Enter number of elements in array\n";
cin >> count;

cout << "Enter " << count << " numbers \n";

for(i = 0; i < count; i++){
cin >> input[i];
}

// Copy numbers from inputArray to outputArray in
// reverse order
for(i = 0; i < count; i++){
output[i] = input[count-i-1];
}

cout << "Reversed Array\n";
for(i = 0; i < count; i++){
cout << output[i] << " ";
}
return 0;
}

最佳答案

嗯,你还没有用过std::vector<int>在你的代码中的任何地方,你都有普通数组,它们的大小都是 500 .这不是要求。

了解 std::vector<>并使用它们而不是那些数组,方法是分配大小仅用户想要的。(即,相应地用户输入 count )。

其次,您可以对 input 中的每个元素进行计算 vector ,同时复制/填充到 output vector 数组。

这是一个示例代码: DEMO HERE

#include <iostream>
#include <vector>

int main()
{
std::cout << "Enter number of elements in array\n";
std::size_t count; std::cin >> count;

std::cout << "Enter " << count << " numbers \n";
std::vector<int> input(count, 0);
// input element
for (int& element : input) std::cin >> element;

std::vector<int> output; output.reserve(count); // reserve memory for elements

// apply to the output vector: for that
// simply reverse iterate input array using the while loop,
// emplace back the calculated result to the output array
while (count--)
{
output.emplace_back((input[count] * 8) + 100);
}

// print out the output
std::cout << "Reversed Array\n";
for (const int element : output) std::cout << element << " ";
return 0;
}

输出:

Enter number of elements in array
10
Enter 10 numbers
1 2 3 4 5 6 7 8 9 10
Reversed Array
180 172 164 156 148 140 132 124 116 108

也就是说,您也可以通过标准算法函数 std::trasform 来完成它 。为此,iterate reversely input vector std::transform并使用 lambda 函数(计算必要的),以及 insert back到 vector output .

SEE LIVE

#include <algorithm> // std::transform

auto doMath = [](int element) { return (element * 8) + 100; }; // lambda which does the calculation
std::transform(input.crbegin(), input.crend(), std::back_inserter(output), doMath);

或者您甚至可以通过在整个程序中只有一个 vector 数组来欺骗用户,您将在其中存储在进行计算后直接输入,如下所示:

SEE LIVE

#include <iostream>
#include <vector>

int main()
{
std::size_t count; std::cin >> count;
std::vector<int> vec; vec.reserve(count);
// take the input and store the calculated value directly in the vec array
while (count--)
{
int element; std::cin >> element;
vec.emplace_back((element * 8) + 100);
}
return 0;
}

关于c++ - 与整数 vector 相乘并相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53202241/

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