繁体   English   中英

两条对角线之间的矩阵元素

Matrix elements between two diagonals

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我需要制作一个在两条对角线之间打印数字 X 的矩阵,并且 rest 是数字 Y。

右对角线是:'i==j' 左对角线是:'i+j==n-1'

这里的问题在于它们之间的 select 元素。

矩阵图:

矩阵

代码:

#include <stdio.h>

int main() {
  int i, j, n = 5, x = 4, y = 6;
  int mat[100][100];
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++) {
      if (i == j || i + j >= n - 1 || j < i) mat[i][j] = y;
      else mat[i][j] = x;
    }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++)
      printf("%d ", mat[i][j]);
    printf("\n");
  }
  return 0;
}

OUTPUT:

6 4 4 4 6

6 6 4 6 6

6 6 6 6 6

6 6 6 6 6

6 6 6 6 6

你能帮我修复矩阵的剩余部分吗? 我只需要在矩阵下部的主对角线之间制作数字 X。

2 个回复

你可以用in来表达对角线,就像你做的那样。 相反,将j带到表达式的左侧。 我把它们写成d1d2

#include <stdio.h>
#include <sys/param.h>

int main() {
  int i, j, n = 5, x = 4, y = 6;
  int mat[n][n];
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++) {
      int d1 = i;
      int d2 = n - i - 1;
      if (j > MIN(d1, d2) && j < MAX(d1, d2)) mat[i][j] = x;
      else mat[i][j] = y;
    }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++)
      printf("%d ", mat[i][j]);
    printf("\n");
  }
  return 0;
}

我已经从sys/param.h中获取了MINMAX ,但是您可能想自己定义它们,无论您需要什么。

请注意,我还颠倒了xy的分配,以便更容易从图片中解释:如果j线上的id1d2之间,则将其设为x ,否则设为y

可以通过单独的测试来隔离上三角和下三角:

#include <stdio.h>

int main() {
    int i, j, n = 5, x = 4, y = 6;
    int mat[n][n];
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            if (j > i && j < n - i - 1) {
                /* upper triangle */
                mat[i][j] = x;
            } else
            if (j < i && j > n - i - 1) {
                /* lower triangle */
                mat[i][j] = x;
            } else {
                /* everywhere else */
                mat[i][j] = y;
            }
        }
    }
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++)
            printf("%d ", mat[i][j]);
        printf("\n");
    }
    return 0;
}
1 R中对角线之间的矩阵元素之和

我有n*n矩阵形式的数据,我想对其进行一些计算(例如sum ),其中元素位于对角线之间(不包括对角线)。 例如对于这个矩阵: sum的结果(对角线元素之间)将是: 如何有效地完成这项工作? ...

2 获取矩阵的两个对角线

我正在使用此Matrix类: http : //ruby-doc.org/stdlib-2.0.0/libdoc/matrix/rdoc/Matrix.html 我以这种方式实例化: 如何从两个对角线中获取元素? 我发现可以通过这种方式从左上角到右下角对角线获取元素: 但 ...

3 在2D矩阵中找到给定点相交的两个对角线

我是编程新手,在执行Java作业时遇到问题。 这篇文章的快速定义: 位置=(行索引,列索引) 我说的对角线是在给定位置相交的对角线。 对角线始终从矩阵的边缘开始。 对角线1从左上方到右下方 对角线2从左下到右上 对角线的“长度”是该对角线上 ...

5 计算矩阵中的空对角线

我正在尝试创建一个计算方阵中空对角线数量的程序,但是我似乎找不到正确的方法来使索引在矩阵中正确运行。 这是到目前为止我得到的错误代码: ...

7 计算矩阵中对角线的总和

我需要用C ++计算矩阵中两个对角线的总和,我已经有了一个解决方案,但我必须愚蠢,因为我无法理解它在做什么,所以我想知道是否有另一个版本,我可以了解。 这是完成工作的代码: 难以理解的部分是 这是我更改的整个代码,但它不适用于辅助对角线: ...

8 获取此矩阵的对角线

我正在尝试创建一个 function ,它将从我的单词搜索难题的列表(即矩阵)中的列表中获取对角线。 截至目前,那些我应该处理的功能。 然而,有些不对劲。 我打算将与正在搜索的单词匹配的第一个字母的坐标的 arguments 放入板上,并从对角线的每个方向连接字符。 ...

9 在对角线上重新排列矩阵 (JS)

我有这个练习任务但是我找不到一个好的方法来开始它,我只需要一个想法如何从角落 1 开始,我可以完成其他的任何节点版本都可以,但我正在使用节点版本:14+ 给定一个具有 n 行 m 列的二维数组 a,由英文小写字母和一个 integer 角指定二维数组 a 的四个角之一。 corner = 1 对 ...

10 将矩阵对角线转换为列

我正在寻找以下形式的矩阵运算: B = M*A*N其中A是一些普通的方形矩阵,而M和N是我要查找的矩阵。 使得列B是的对角线A 。 第一列是主对角线,第二列是对角线从主角偏移1,依此类推。 例如在MATLAB语法中: 和 编辑:似乎不存在纯线性代数解决方案。 因此,我 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM