Home > Back-end >  Want to reverse an array of numbers C
Want to reverse an array of numbers C

Time:01-13

I have some code written but I'm not sure why the reversed array is not giving me the exact values I need. I created a second array the same size as the first and used nested for loops to fill the second with the contents of the first in reverse. See below:

#include <iostream>
using namespace std;

int main()
{
    // Ask for how big the array is
    int n;
    cout << "how big is the array?" << endl;
    cin >> n;
    // create array
    int a[n];
    // create second array
    int b[n];
    // ask for contents of the 1st array
    cout << "what's in the array?" << endl;
    for (int i = 0; i < n; i  )
    {
        cin >> a[i];
    }
    // reverse the array
    for (int i = n - 1; i >= 0; i--)
    {
        for (int k = 0; k < n; k  )
        {
            b[k] = a[i];
            break;
        }
    }
    // print out the new array
    for (int k = 0; k < n; k  )
    {
        cout << b[k] << endl;
    }

    return 0;
}

CodePudding user response:

you don't need 2 bucles for fill the second array try with:

//reverse the array
s = 0;
for (int i=n-1;i>=0;i--){
    b[n]=a[s];
    s  ;
}

CodePudding user response:

Try something like this:

#include <algorithm>
#include <iostream>
#include <vector>

namespace {
template <typename IStream>
[[nodiscard]] int readOneIntFrom(IStream& istream) {
    int x;
    istream >> x;
    return x;
}
}

int main()
{
    // Ask for how big the array is
    std::cout << "how big is the array?" << std::endl;
    auto n = readOneIntFrom(std::cin);
    // create array
    std::vector<int> a;

    // ask for contents of the 1st array
    std::cout << "what's in the array?" << std::endl;
    for (int i = 0; i < n; i  )
    {
        a.emplace_back(readOneIntFrom(std::cin)); // Make a new entry at the end of a.
    }
    // Construct b from a backward. (Or do auto b = a; std::reverse(b.begin(), b.end());
    auto b = std::vector<int>(a.rbegin(), a.rend());

    // print out the new array
    for (const auto& bi : b)
    {
        std::cout << bi << std::endl;
    }

    return 0;
}
  •  Tags:  
  • Related