- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我要感谢所有阅读本主题的人。非常感谢。
在我大学编程科目的期末项目中,我被告知要编写一个使用单个矩阵的程序,并具有以下“限制”:
用户输入年份间隔(例如:2017-2020)
,这将使用以下公式确定矩阵的行数:
NumberOfLines=(FinalYearGiven - InicialYearGiven) + 1;
矩阵的列数必须固定为 6。
每行的第一列将显示年份。
第二个将显示二月的天数。
第三个将显示一年中的天数。
第四个将显示一年中的小时数。
第五位将显示一年中的分钟数。
第六位将显示一年中的秒数。
去年我被指示做一个程序,将两个输入矩阵相乘,其分配如下:
double** multiplication_of_2_matrices(double **A, double **B, int lines1, int columns1, int lines2, int columns2)
{
int i, j, k;
double **C; // Pointer to the resultant matrix, dynamically allocating the matrix in this function
C = (double**)malloc(lines1 * sizeof(double*));
for (i = 0; i<lines1; i++)
C[i] = (double*)malloc(columns2 * sizeof(double));
for (i = 0; i < lines1; i++)
{
for (j = 0; j < columns2; j++)
{
C[i][j] = 0.0;
for (k = 0; k < columns1; k++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
我的疑问在于我可以在这个特定项目中做什么来动态分配矩阵。我可以使用上面指定的分配形式还是需要使用其他形式?
最佳答案
是的,您可以采用完全相同的分配方式,但唯一的问题是您现在想要使用 int
元素而不是 double。
步骤将是精确的
获得numberOfLines
后,您将分配动态锯齿状数组。
同时做两件事
malloc
的返回值。没必要。释放
动态分配的内存。unsigned int **c = malloc(sizeof *a*numberOfLines);
if (c == NULL){
fprintf(stderr,"Error in allocation");
exit(1);
}
for(size_t i = 0; i< numberOfLines; i++){
c[i] = malloc(sizeof *a[i]*NUMCOLS);
if( c[i] == NULL){
fprintf(stderr,"Error in allocation");
exit(1);
}
}
...
return c;
对常量使用魔数(Magic Number),例如 6
.#define NUMCOLS 6
。 (不是强制性的 - 您也可以将其作为一些参数传递)。只要确保它不会被意外更改即可。
我在这里使用了unsigned
,因为您要存储的数据都不会是负数。
已指出的一些修改$
由于 unsigned int
的大小可能会因系统而异(unsigned int 至少有 32 位是不正确的),因此最好使用这个小的确保最大尺寸类型的技巧。
#if sizeof(unsigned int) < 4
typedef unsigned long mydata;
#else
typedef unsigned int mydata;
#endif
另外一点是,您可以这样做来获取二维数组而不是锯齿状数组,而不是碎片内存。
mydata (*a)[NUMCOLS] = malloc(sizeof *a*numberOfLines);
if (a == NULL){
fprintf(stderr,"Error in allocation");
exit(1);
}
...
return a;
<小时/>
您还可以通过另一种方式来一次性分配元素总数。然后相应地访问职位。
mydata *a = malloc(sizeof *a * NUMCOLS * numberOfLines);
if (a == NULL){
fprintf(stderr,"Error in allocation");
exit(1);
}
..
..
//accessing a[i][j] will be i*NUMCOLS+j
$PeterJ_01指出了这些细节并建议了另一种实现分配方式的范围
关于c - 使用动态内存分配构造特定矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47409276/
谁能解释一下原因: (define a (lambda() (cons a #f))) (car (a)) ==> procedure ((car (a))) ==> (procedure . #f)
这是 PyBrain 网站的摘录。我了解大部分正在发生的事情,但是一行让我完全难住了。我以前从未在 python 代码中看到过这样的东西。这是整个循环,对于上下文: for c in [0,
我是gradle / groovy的新手。我想创建将做一些事情的自定义任务。我的第一个问题是任务完成时该如何做?我可以覆盖doFirst / doLast闭包吗?也许我可以重写某些在开始和结束时都会执
我刚刚开始评估 MS 企业库。他们使用以下指令来获取实例: var customerDb = EnterpriseLibraryContainer.Current.GetInstance("C
这是我的 if else Ansible 逻辑.. - name: Check certs exist stat: path=/etc/letsencrypt/live/{{ rootDomain
我正在使用construct 2.8 对一些失传已久的 Pascal 程序创建的一些文件的 header 进行逆向工程。 header 由许多不同的记录组成,其中一些是可选的,我不确定顺序是否固定。
我在将 getchar() 的输入放入 char *arr[] 数组时遇到问题。我这样做的原因是因为输入数据(将是一个带有命令行参数的文件)将存储在一个 char 指针数组中以传递给 execvp 函
通常我们不能约束类型参数 T派生自密封类型(例如 struct 类型)。这将毫无意义,因为只有一种类型适合,因此不需要泛型。所以约束如下: where T : string 或: where T :
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
#include using namespace std; class A { private: int m_i; friend int main(int argc, char cons
这个问题在这里已经有了答案: Are there legitimate uses for JavaScript's "with" statement? (33 个答案) 关闭 9 年前。 我有这个代
在this answer我看到了下一个 Bash 结构。 yes "$(< file.txt)" 什么意思 "$(< file.txt)" ? 我明白了 命令替换 - $(command)用命令的结
if (a == 1) //do something else if (a == 2) //do something else if (a == 3) //do somethi
关于构造的快速简单的问题。 我有以下用于将项目添加到 ListView 的代码。 ListViewItem item = new ListViewItem(); item.Text = file; i
我想使用 std::vector 来控制给定的内存。首先,我很确定这不是好的做法,但好奇心占了上风,无论如何我都想知道如何做到这一点。 我遇到的问题是这样的方法: vector getRow(unsi
下面显示了一段简单的javascript: var mystring = ("random","ignored","text","h") + ("ello world") 这个字符串会生成 hello
在 Java 中,创建对象的标准方法是使用 MyClass name = new MyClass(); 我也经常看到构造 new MyClass() { /*stuff goes in here*/
我正在编写 C++ ndarray 类。我需要动态大小和编译时大小已知的数组(分别分配自由存储和分配堆栈)。我想支持从嵌套的 std::initializer_list 进行初始化。 动态大小的没问题
我正在将一个项目从 Visual Studio 2005 转换为 Visual Studio 2008,并提出了上述结构。 using Castle.Core.Resource; using Cast
我想知道我在这里的想法是否正确,我主要针对接口(interface)进行编程,所以我想知道下面的类是否应该通过 DI 注入(inject),或者我应该自己实例化一个类... 注意:这些服务保存在我的核
我是一名优秀的程序员,十分优秀!