我需要创建一些处理任意大小矩阵的函数.我熟悉这里使用的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) 我需要帮助理解如何在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中调整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)
我只得到一个段错误.阵列的旧区域工作正常.我该如何解决这个问题?
基本上我有:
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
我在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) 我将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)
我有这样的数组:
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)
如何才能做到这一点?
迭代嵌套列表有很多问题,但是我想迭代嵌套列表并应用另一个列表.
这是我的场景:
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
我刚刚使用以下代码删除了数组中的元素:
delete chckboxIDs[0][0];
Run Code Online (Sandbox Code Playgroud)
这就是我的数组中的数据现在的样子:
现在我的数组有一个空单元格,它打破了代码,因为我根据程序中其他位置的长度循环它,导致空值异常.我如何摆脱这个空旷的空间?
如果我将所有元素向下移动直到它处于最后位置,它仍然会在那里并仍然破坏代码?有一个更好的方法吗?
我在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);
谢谢