标签: multidimensional-array

是否可以在Ada中创建动态的2d数组而不使用'declare'?

我需要创建一些处理任意大小矩阵的函数.我熟悉这里使用的declare语法,但这是为了大学任务,我的教授告诉我,使用'declare'有一些矫枉过正.我在网上找不到任何相关内容,有什么帮助吗?

基本上我想通过键盘获得矩阵大小,然后使用生成的矩阵,我坚持declare 目前我有:

type myMatrix is array (Natural range <>, Natural range <>) of Integer; 
type myVector is array (Natural range <>) of Integer;       
Run Code Online (Sandbox Code Playgroud)

我用它作为:

procedure Lab1 is
 begin
 declare A, B: myVector(1..5):=
 (3, 14, 15, 92, 6);
Run Code Online (Sandbox Code Playgroud)

它不允许在运行时指定大小,并且:

  declare 
    int1:Integer:=generate_random_number(50)+2; 
    int3:Integer:=generate_random_number(50)+2; -- +2 so we don't get length/size 0 or 1
    X, Y:myVector(1..int1):=(others=>generate_random_number(20));
    MT:myMatrix(1..int1, 1..int3):=(others =>(others=>generate_random_number(10))); -- 'others' used for all the unmentioned elements, http://rosettacode.org/wiki/Array_Initialization
    MS:myMatrix(1..int3, 1..int1):=(others =>(others=>generate_random_number(10))); 
    F3_result:myMatrix(1..int1, 1..int1);  
  begin 
    F3_result:=F3(X, Y, MT, …
Run Code Online (Sandbox Code Playgroud)

arrays ada matrix multidimensional-array

-1
推荐指数
1
解决办法
179
查看次数

C中使用2D数组的指针算法

我需要帮助理解如何在C中使用点算法来计算二维数组.我正在使用这个网站(http://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/)作为参考(使用示例1) ,一个指针).

int numRows = 2;
int numColumns = 3;

double * arrayMatrix = malloc(numRows * numColumns * sizeof(double));

int row = 0;
int column = 0;

printf("\nPlease enter the elements of your augmented matrix:\n");
for(row = 0; row < numRows; row++)
{
    for(column = 0; column < numColumns; column++)
    {
        printf("A[%d][%d]:", row + 1, column + 1);
        scanf("%lf", &arrayElement);
        printf("\n");

        *(arrayMatrix + row * numColumns + column) = arrayElement;
        //arrayMatrix[row + numColumns + column] = arrayElement;
    } …
Run Code Online (Sandbox Code Playgroud)

c pointers pointer-arithmetic multidimensional-array

-1
推荐指数
1
解决办法
2837
查看次数

在C中调整2D数组的大小

目前我正在尝试使用此代码片段在C中调整2D数组的大小

array = (int**) realloc(array, s * 2 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

其中s是行和列中数组的大小.但是,当试图像这样访问数组的新区域时,

array[3][0] = x;
Run Code Online (Sandbox Code Playgroud)

我只得到一个段错误.阵列的旧区域工作正常.我该如何解决这个问题?

c arrays memory-management multidimensional-array

-1
推荐指数
1
解决办法
3157
查看次数

如何对String或2d多维数组进行排序?

基本上我有:

String[][] mda = {{"Hello ma", "3"},
                  {"How r u?", "2"},
                  {"i m fine", "5"}};
Run Code Online (Sandbox Code Playgroud)

确切地说,我想根据它的数值对这个数组进行排序,如下所示:

"How r u?", "2"
"Hello ma", "3"
"i m fine", "5"
Run Code Online (Sandbox Code Playgroud)

问候<3

java arrays multidimensional-array

-1
推荐指数
1
解决办法
58
查看次数

'_comp'不能用作函数错误

我在stl_algobase.h标头文件中收到“'_comp'不能用作函数”错误。这是我的代码以及应该有错误的头文件部分。码:

#include<iostream>
#include<algorithm>

using namespace std;

void subsqr(int a[10][10]){
    //int s[][10];
    for(int i =1;i<5;i++){
        for(int j = 1;j<5;j++){
            if(a[i][j] == 1){
                a[i][j] = min(a[i][j-1], a[i-1][j],a[i-1][j-1]) + 1;
            }
        }
    }
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++){
            cout<<a[i][j]<<"\t";
        }
        cout<<endl;
    }
}

int main(){
    int a[10][10] = {{0,1,1,0,1}, {1,1,0,1,0}, {1,1,1,0}, {1,1,1,1,0}, {1,1,1,1,1}, {0,0,0,0,0}};

    subsqr(a);  
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

stl_algobase.h:

 template<typename _Tp, typename _Compare>
    inline const _Tp&
    min(const _Tp& __a, const _Tp& __b, _Compare __comp)
    {
      //return __comp(__b, __a) ? __b : __a;
      if (__comp(__b, …
Run Code Online (Sandbox Code Playgroud)

c++ multidimensional-array

-1
推荐指数
1
解决办法
1989
查看次数

如何获取string [] []的长度

我将2D数组的字符串定义为

string[][] input_data;
Run Code Online (Sandbox Code Playgroud)

我可以计算行数,input_data.GetLength(0) 但如果我input_data.GetLength(1)用来获取列数,我总是得到

System.IndexOutOfRangeException未处理Message = Index超出了数组的范围.Source = mscorlib StackTrace:在System.Array.GetLength(Int32维度)...

我还注意到在调试时,当我将鼠标悬停在我的数组上时(在插入所有数据之后),它只显示第一个值(行数)input_data| {string[18][]},如果我继续展开数组,那么它显示所有18列数据与列数据,如下所示:

在此输入图像描述

如何获得列数?(在这种情况下是139)

.net c# arrays multidimensional-array

-1
推荐指数
1
解决办法
1799
查看次数

如何将第一级键与其第二级值合并并删除所有关联键?

我有这样的数组:

Array (
    [2018-03-12] => Array (
        [United States] => 4
        [Australia] => 15
        [United Kingdom] => 0
        [New Zealand] => 0
    )
    [2018-03-13] => Array (
        [United States] => 0
        [Australia] => 8
        [United Kingdom] => 2
        [New Zealand] => 0
    )
)
Run Code Online (Sandbox Code Playgroud)

我想制作一个这样的数组:

[
    ["2018-03-12", 4, 15, 0, 0],
    ["2018-03-13", 0, 8, 0, 2]
]
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

php indexing multidimensional-array array-merge

-1
推荐指数
1
解决办法
315
查看次数

将操作和列表应用于嵌套列表

迭代嵌套列表有很多问题,但是我想迭代嵌套列表并应用另一个列表.

这是我的场景:

def operation(a, b):
    return a + b

def magic_function(func, list, nested_list):
    """iterate over nested_list and apply the next element of list"""
    ...

magic_function(operation, [0, 0, 0, 10, 10, 10], [[1, 2, 3], [1, 2, 3]])
Run Code Online (Sandbox Code Playgroud)

期望的输出:

[[1, 2, 3], [11, 12, 13]]
Run Code Online (Sandbox Code Playgroud)

用numpy回答这个问题的冲动可能很强烈,但在实际情况中,这些是对象,而不是数字.

该标准itertools.chain.from_iterable在此处不起作用,因为它不保留列表的嵌套.

python iterator functional-programming list multidimensional-array

-1
推荐指数
1
解决办法
149
查看次数

从多维数组中删除元素的最佳方法 - JavaScript

我刚刚使用以下代码删除了数组中的元素:

delete chckboxIDs[0][0];
Run Code Online (Sandbox Code Playgroud)

这就是我的数组中的数据现在的样子:

在此输入图像描述

现在我的数组有一个空单元格,它打破了代码,因为我根据程序中其他位置的长度循环它,导致空值异常.我如何摆脱这个空旷的空间?

如果我将所有元素向下移动直到它处于最后位置,它仍然会在那里并仍然破坏代码?有一个更好的方法吗?

javascript multidimensional-array

-1
推荐指数
1
解决办法
1724
查看次数

在C中动态创建字符串数组

我在Ubuntu 18.04上有下一个C代码:

#define ID_LEN 5

int main(int argc, char *argv[])
{
    int variableNumberOfElements = 5;
    char **orderedIds;

    *orderedIds = (char *) malloc(variableNumberOfElements * sizeof (char*));
    for (int i = 0; i < variableNumberOfElements; i++)
        orderedIds[i] = (char *) malloc((ID_LEN+1) * sizeof(char));


    for (int i = 0; i < variableNumberOfElements; i++)
        free (orderedIds[i]);

    free(*orderedIds);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式构建此代码:

g++ -g mymain.c
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,我收到一个"分段故障(核心转储)"错误

*orderedIds = (char *) malloc(variableNumberOfElements * sizeof (char*));
Run Code Online (Sandbox Code Playgroud)

哪个是问题?

更新:

分配内存的正确方法是:orderedIds =(char**)malloc(variableNumberOfElements*sizeof(char*));

和:free(orderedIds);

谢谢

c string memory-management multidimensional-array

-1
推荐指数
1
解决办法
70
查看次数