gpt4 book ai didi

c++ - 如何反转集合数组的顺序

转载 作者:行者123 更新时间:2023-12-01 14:16:03 24 4
gpt4 key购买 nike

这是我类的练习,我不确定如何处理需要倒序的函数。

#include <iostream>
#include <iomanip>

void reverseorder(int[], int);
void printout(int[], int);

const int SIZE = 10;

int main()
{
int number[SIZE] = {10, 15, 20, 25, 30, 35, 40, 45, 50, 55};

reverseorder(number, SIZE);
printout(number, SIZE);
}

void reverseorder(int number[], int SIZE)
{
for (int i = 0; i < SIZE; i++)
{

number[i] = number[SIZE - i];
return;
}
}

void printout(int number[], int SIZE)
{
for (int i = 0; i < SIZE; i++)
{
std::cout << number[i] << std::setw(5);
}
std::cout << std::endl;
}

我知道 fnc void reverseorder(int number[], int SIZE) 是不正确的,因为这是唯一需要做的事情。如果您知道答案但不想直接告诉我,那么任何提示也将不胜感激!谢谢大家

编辑:目前的输出是:SalvGis-MBP:c++ 编程$ ./a.out503709838 15 20 25 30 35 40 45 50 55

但我希望它是55 50 45 40 35 30 25 20 15 10

不确定为什么要生成 503709838。有人提到第一次迭代被破坏,这可能解释了这一点。

最佳答案

要反转数组,您需要使用标准函数 std::swap 或自己编写这样的函数。

这个函数

void reverseorder(int number[], int SIZE)
{
for (int i = 0; i < SIZE; i++)
{

number[i] = number[SIZE - i];
return;
}
}

不交换数组的元素。因此,例如在第一次迭代中由于这个声明

    number[i] = number[SIZE - i];

number[0] 元素的值将会丢失。而且当i等于0时,使用了数组number[SIZE - i]中不存在的元素。

你需要交换数组的两半。

也是std::setw在这个语句中的调用

std::cout << number[i] << std::setw(5);

没有意义。此调用应放在输出表达式 number[i] 之前。

请注意,这两个函数都应具有类型为 size_t 的第二个参数,并且输出数组的函数的第一个参数应具有限定符 const,因为在函数中使用的数组不是改变了。

给你。

#include <iostream>
#include <utility>

void reverseorder( int a[], size_t n )
{
for ( size_t i = 0; i < n / 2; i++ )
{
std::swap( a[i], a[n-i-1] );
}
}

std::ostream & printout( const int a[], size_t n, std::ostream &os = std::cout )
{
for ( size_t i = 0; i < n; i++ )
{
os << a[i] << ' ';
}

return os;
}


int main()
{
int number[] = {10, 15, 20, 25, 30, 35, 40, 45, 50, 55};
const size_t N = sizeof( number ) / sizeof( *number );

printout( number, N ) << '\n';

reverseorder( number, N );

printout( number, N ) << '\n';

return 0;
}

程序输出为

10 15 20 25 30 35 40 45 50 55 
55 50 45 40 35 30 25 20 15 10

如果你可能不使用 std::swap 那么在循环中写例如

    for ( size_t i = 0; i < n / 2; i++ )
{
int tmp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = tmp;
}

关于c++ - 如何反转集合数组的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61108937/

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