我可以通过在 c 中同时索引两个矩阵来将矩阵的值传递给另一个矩阵吗?

8TrackRobot

我正在编写一段使用结构和 5 个预定义函数的代码,我在将选定索引处的输入二维数组的值传递给新的二维数组时遇到问题。

我已经包含了我的函数和我遇到困难的函数代码。

struct matrix
{
char name;
int mValues[10][10];
int ncols;
int nrows;
};

void matrixInput(struct matrix *matA);
void matrixDisplay(struct matrix matA);
void matrixTrace(struct matrix matA, int *trace);
void matrixDeterminant(struct matrix m1, struct matrix *m2, int * determinant);


///function body 
void matrixDeterminant(struct matrix m1, struct matrix *m2, int * determinant)
{
int i, j, k, l;
FILE* fin;
fin = fopen("marks.txt", "r");
if(((m1.nrows)>2))
{
    printf("\n\nFinding the deterinamt now.\n");
    if(fin!=NULL)
    {
        do
        {
             printf("Please assign a letter to name your matrix A - Z : ");
             scanf(" %c", &((*m2).name));
        }
             while((((*m2).name)<'A') || ((*m2).name)>'Z');
        do
        {
             printf("\n\nEnter the row where you want to start the 2x2 matrix.\nNumber needs to be between 1 and %d : ", ((m1).nrows-1));
             scanf("%d", &k);
        }
             while((k) >= ((m1).nrows));
        do 
        {
             printf("\n\nEnter the column where you want to start you 2x2 mtrix.\nNumber needs to be between 1 and %d : ", ((m1).ncols-1));
             scanf("%d", &l);
        }
             while((l) >= ((m1).ncols));
    }

    for(i=0; i<2; i++,k++)
        {
             printf("Row %d:\t", i+1);

             for(j=0; j<2; j++,l++)
                 {
                    ((*m2).mValues[i][j]) = ((m1).mValues[k-1][l-1]);
                    printf("%d\t",((*m2).mValues[i][j])); 
                 }
                 printf("\n");
        }

}

/// Input/Output
Please assign a letter to name your matrix A - Z : H

Please enter the number of rows in matrix H > 1 < 10 :8

Please enter the number of cols in matrix H > 1 < 10 :8

Matrix H has 8 rows and 8 columns and contains:

Row 1:  55  7   40  30  32  45  43  77
Row 2:  72  1   20  65  85  40  46  22  
Row 3:  45  77  88  32  30  55  59  99  
Row 4:  72  37  33  18  44  73  44  12  
Row 5:  88  2   11  55  7   40  30  32  
Row 6:  24  73  13  99  99  22  45  77  
Row 7:  88  32  22  11  98  34  38  37  
Row 8:  33  18  44  73  22  45  77  88 

Trace of matrix H = 317 

Finding the deterinamt now.
Please assign a letter to name your matrix A - Z : F

Enter the row where you want to start the 2x2 matrix.
Number needs to be between 1 and 7 : 3

Enter the column where you want to start you 2x2 mtrix.
Number needs to be between 1 and 7 : 3
Row 1:  88  32  
Row 2:  44  73   // This has shifted 2 columns. 

Process returned 0 (0x0)   execution time : 14.807 s
Press ENTER to continue.

First 函数让用户命名并定义矩阵的维度,然后从包含 10x10 整数的 .txt 文件填充该矩阵。

第二个函数显示矩阵,第三个函数计算迹线。

第四个函数要求用户选择一个 2x2 矩阵,它是原始矩阵的子集。2x2 矩阵的内容必须存储在一个新的结构矩阵中,连同它的名称和大小。

我“认为”我所做的是询问用户从哪里开始子矩阵并将值存储在 k 和 l 处,然后我将这些值用作索引。

我认为我的问题发生在将这些值传递给新矩阵时,在嵌套的 for 循环中,我增加了 i 和 j 以索引新矩阵,并增加 l 和 k 以索引我从中传递值的矩阵。

注意:我之前从未见过 2 个值在 for 循环中递增,所以我希望它不会做我“认为”它正在做的事情,因为子矩阵的第 2 行已经移动了 2 列。

任何帮助,将不胜感激。

瑞达·德里西

在最内层循环中递增的 l 是罪魁祸首

for(j=0; j<2; j++,l++)

你需要重新初始化它

for(i=0; i<2; i++,k++)
        {
             printf("Row %d:\t", i+1);

             for(j=0; j<2; j++,l++)
                 {
                    (m2->mValues[i][j]) = ((m1).mValues[k-1][l-1]);
                    printf("%d\t",(m2->mValues[i][j])); 
                 }
                 printf("\n");
                 l=l-2;
        }

因为在第一行中 l 增加了两次,在第二行中它又增加了两次。

我建议您避免使用单字母变量,尤其是@JohnColeman 所说的“l”,因为它们是调试的噩梦。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过另一个矩阵中的值汇总一个矩阵

来自分类Dev

通过numpy中的索引数组从另一个矩阵填充空矩阵的行

来自分类Dev

如何使用r中的另一个矩阵通过for循环更改矩阵的值?

来自分类Dev

我可以通过模板(使用C ++ 17变体)将一个类与另一个类关联吗?

来自分类Dev

应用-通过合并其他两个矩阵来创建矩阵,使用向量中的值选择要合并的列中的一个

来自分类Dev

我可以通过It.Is <>传递给另一个方法来设置模拟吗?

来自分类Dev

为什么我不能将右值引用传递给C ++ 11中的另一个函数?

来自分类Dev

如何用另一个矩阵的值(使用Rcpp)替换C ++中矩阵的元素?

来自分类Dev

我想用另一个较小的矩阵中给出的权重替换邻接矩阵中的1值

来自分类Dev

C#中的方法可以覆盖另一个方法并同时是虚拟的吗?

来自分类Dev

通过另一个活动的onClick事件将值传递给其容器活动的两个片段

来自分类Dev

我们可以将变量从一个C程序传递到另一个C程序吗?

来自分类Dev

我们可以将变量从一个C程序传递到另一个C程序吗?

来自分类Dev

我可以将我的C主机中的值通过Lua传递给回调C函数吗?

来自分类Dev

R,我怎么知道这个矩阵的行数等于另一个矩阵的第一个值?

来自分类Dev

我可以将 IntPtr 的值转换为另一个 IntPtr 而不在 C# 中不安全吗?

来自分类Dev

我如何从另一个程序运行一个程序,并通过stdin在c或c ++中将数据传递给它?

来自分类Dev

比较C中的两个矩阵

来自分类Dev

有没有一种方法可以将方法传递给c#中的另一个方法,最好的方法是什么?

来自分类Dev

我可以代理将根传递给一个地址,其余的传递给 nginx 中的另一个地址吗?

来自分类Dev

我可以通过从另一个变量构造变量来调用它吗?

来自分类Dev

在C#中,可以将值添加到集合中,同时将其分配给另一个变量

来自分类Dev

我可以将对象或值从一个rake任务传递给另一个吗?

来自分类Dev

我可以将一个函数和不同数量的参数传递给另一个函数吗?

来自分类Dev

numpy:为什么我不能将一个矩阵分配给另一个矩阵的索引部分?

来自分类Dev

我可以使用符号链接将C:\ Users“移动”到另一个驱动器吗?

来自分类Dev

在C#中是否可以要求将两个参数之一准确地传递给方法?

来自分类Dev

在C#中是否可以要求将两个参数之一准确地传递给方法?

来自分类Dev

C# - 我似乎无法将数组传递给不同的方法,一个用于初始化,另一个用于修改?

Related 相关文章

  1. 1

    通过另一个矩阵中的值汇总一个矩阵

  2. 2

    通过numpy中的索引数组从另一个矩阵填充空矩阵的行

  3. 3

    如何使用r中的另一个矩阵通过for循环更改矩阵的值?

  4. 4

    我可以通过模板(使用C ++ 17变体)将一个类与另一个类关联吗?

  5. 5

    应用-通过合并其他两个矩阵来创建矩阵,使用向量中的值选择要合并的列中的一个

  6. 6

    我可以通过It.Is <>传递给另一个方法来设置模拟吗?

  7. 7

    为什么我不能将右值引用传递给C ++ 11中的另一个函数?

  8. 8

    如何用另一个矩阵的值(使用Rcpp)替换C ++中矩阵的元素?

  9. 9

    我想用另一个较小的矩阵中给出的权重替换邻接矩阵中的1值

  10. 10

    C#中的方法可以覆盖另一个方法并同时是虚拟的吗?

  11. 11

    通过另一个活动的onClick事件将值传递给其容器活动的两个片段

  12. 12

    我们可以将变量从一个C程序传递到另一个C程序吗?

  13. 13

    我们可以将变量从一个C程序传递到另一个C程序吗?

  14. 14

    我可以将我的C主机中的值通过Lua传递给回调C函数吗?

  15. 15

    R,我怎么知道这个矩阵的行数等于另一个矩阵的第一个值?

  16. 16

    我可以将 IntPtr 的值转换为另一个 IntPtr 而不在 C# 中不安全吗?

  17. 17

    我如何从另一个程序运行一个程序,并通过stdin在c或c ++中将数据传递给它?

  18. 18

    比较C中的两个矩阵

  19. 19

    有没有一种方法可以将方法传递给c#中的另一个方法,最好的方法是什么?

  20. 20

    我可以代理将根传递给一个地址,其余的传递给 nginx 中的另一个地址吗?

  21. 21

    我可以通过从另一个变量构造变量来调用它吗?

  22. 22

    在C#中,可以将值添加到集合中,同时将其分配给另一个变量

  23. 23

    我可以将对象或值从一个rake任务传递给另一个吗?

  24. 24

    我可以将一个函数和不同数量的参数传递给另一个函数吗?

  25. 25

    numpy:为什么我不能将一个矩阵分配给另一个矩阵的索引部分?

  26. 26

    我可以使用符号链接将C:\ Users“移动”到另一个驱动器吗?

  27. 27

    在C#中是否可以要求将两个参数之一准确地传递给方法?

  28. 28

    在C#中是否可以要求将两个参数之一准确地传递给方法?

  29. 29

    C# - 我似乎无法将数组传递给不同的方法,一个用于初始化,另一个用于修改?

热门标签

归档