首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组排序,数组输入,数组输出

数组排序,数组输入,数组输出
EN

Stack Overflow用户
提问于 2015-11-30 09:20:35
回答 1查看 99关注 0票数 0

我对这个程序有一些问题。它的目的是将随机数输入到一个数组中,改变其维数,对它们进行排序,然后输出排序后的数组。由于某些原因,数组将只填充一个数字(-858993460),我不知道为什么。任何帮助都将不胜感激。

代码语言:javascript
复制
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cstring>
using namespace std;

void InputArray(int[][5], int, int);
void OutputArray(int[], int);
void SelectionSort(int[], int);
void CopyArray(int[][5], int, int, int[], int);


int main()
{
    int sample_1[80];
    int sample_2[16][5];

    InputArray(sample_2, 16, 5);

    CopyArray(sample_2, 16, 5, sample_1, 80);

    cout << "Before sorting, contents of the array:" << endl << "----------------------" << endl;
    OutputArray(sample_1, 80);

    SelectionSort(sample_1, 80);

    cout << "After sorting, contents of the array:" << endl << "----------------------" << endl;
    OutputArray(sample_1, 80);

    return 0;
}

//generate random numbers for a two dimensional array
void InputArray(int array[][5], int m, int n)
{
    int i, j;
    srand(time(NULL));
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            array[i][j] = rand() % 1000;
        }
    }
}

//display values in a one-dimensional array
void OutputArray(int array[], int number)
{
    int i;

    for (i = 0; i < number; i++)
    {
        cout << array[i] << "\t";
    }
}

// selection sort of a one-dimensional array
void SelectionSort(int numbers[], int array_size)
{
    int i, j, a;
    for (i = 0; i < array_size; ++i) {
        for (j = i + 1; j < array_size; ++j) {
            if (numbers[i] > numbers[j]) {
                a = numbers[i];
                numbers[i] = numbers[j];
                numbers[j] = a;
            }
        }
    }


    return;
}

//x and y and two dimensions of array_2d; n is the dimension of array_1d
//copy values from array_2d[][] to array_1d[]
//assume x*y equals n
void CopyArray(int array_2d[][5], int x, int y, int array_1d[], int n)
{
    memcpy(array_2d, array_1d, sizeof(array_1d));


    return;
}
EN

回答 1

Stack Overflow用户

发布于 2015-11-30 09:32:51

代码语言:javascript
复制
void CopyArray(int array_2d[][5], int x, int y, int array_1d[], int n)
{
    memcpy(array_2d, array_1d, sizeof(array_1d));
}

这就是你的问题所在此处未指定array_1d的大小。sizeof()运算符不知道要复制的数组的大小。

事实上,我很惊讶这个代码竟然能编译,尽管我太懒了,不想和gcc一起测试它。

您需要做的是自己计算数组的大小,将其乘以sizeof(int),然后使用它代替现有的sizeof()运算符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33990147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档