在数组中交换备用

问题描述 投票:0回答:2

您已获得一个大小为 N 的数组/列表(ARR)。您需要交换数组/列表中的每对备用元素。 您不需要打印或返回任何内容,只需更改输入数组本身即可。

#include <iostream>;
using namespace std;

void printArr(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i]<<i;
}

void UpdateArr(int arr[], int n)
{

   int i = 0, j = n - 1;

    
    while (i < j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
        i += 2;
        j -= 2;
    }
  cout<<' printArr(arr[], n)';
}

int main()
{
    int t;
    cin>> t;

     int n;
 cin>> n;
 int input[100];
 for(int i=0; i<n; i++) {
    cin >>input[i];
 }
    int arr[100] ;
    n = sizeof(arr) / sizeof(arr[0]);

    UpdateArr(arr, n);

    return 0;
}

c++ arrays swap alternate
2个回答
0
投票

我不确定您到底期望输出是什么(请编辑它并显示预期输出),但我认为这就是您需要做的

#include <iostream>
#include <iomanip>
using namespace std;

void UpdateArray(int Arr[], size_t n) {
    for (size_t i = 0; i < n / 2; i++) {
        int Holder = Arr[i];
        Arr[i] = Arr[~i + n];
        Arr[~i + n] = Holder; } }

int main() {
    int Arr[7] = { 1,2,3,4,5,6,7 };
    UpdateArray(Arr, 7);
    for (int i = 0; i < 7; i++) {
        std::cout << Arr[i] << "\n"; }
    return 0; }

size_t 就像一个 int 但它不能变成负数,但它可以取更大的正数,你可以用 int 替换它,它应该没有什么区别。
所以我们循环遍历数组的一半,用最后一项替换第一项,[~i + n]将值翻转到另一侧,所以就像数组大小为20的索引4将变成15


0
投票
#include<iostream>
using namespace std;
// arrays 
int even[8] = {1,2,3,4,5,6,7,8};
int odd[5] = {10,11,12,13,14};
// swapping algo which  takes two parameters array and its size
void swapAlter(int arr[],int size){
for(int i=0;i<size;i+=2){
//Here checking next element is present in the array or not
    if(i+1<size){
        swap(arr[i], arr[i+1]);
    }
}
}
// for printing array elements in cpp
// printing algo
void printArray(int arr[], int size){
for(int i=0; i<size;i++){
    cout<<arr[i]<<""<<endl;
}
cout<<endl;
}
int main(){
//tested for even value array
swapAlter(even,8);
printArray(even,8);
cout<<endl;
//tested for odd value array
swapAlter(odd,5);
printArray(odd,5);
}
© www.soinside.com 2019 - 2024. All rights reserved.