【发布时间】:2020-12-24 18:04:08
【问题描述】:
我想删除矩阵中的连续行。例如:
我的矩阵有 3 行 3 列。
矩阵的元素是:
1 2 3
1 2 3
4 5 6
对于此示例,输出应为:
1 2 3
4 5 6
我已经尝试了一个实现,但我遇到了一些问题,我知道我必须使用另一个矩阵,其行必须被修改,但到目前为止我没有任何正确的结果。
我怎样才能让它工作?
#include <stdio.h>
#include <stdlib.h>
void readMatrix(int matrix[100][100], int noRows, int noCol);
void removeLine(int matrix[100][100], int noRows, int noCol);
void printMatrix(int matrix[100][100], int noRows, int noCol);
int main()
{
int noRows, noCol, matrix[100][100], i, j;
printf("n="); scanf("%d", &noRows);
printf("m="); scanf("%d", &noCol);
readMatrix(matrix, noRows, noCol);
printMatrix(matrix, noRows, noCol);
return 0;
}
void removeLine(int matrix[100][100], int noRows, int noCol)
{
int i, j;
int temp[100][100];
for (i = 0; i < noRows - 1; i++)
for (j = 0; j < noCol; j++)
{
if (matrix[i][j] == temp[i + 1][j])
{
matrix[i][j] == temp[i + 1][j];
}
}
}
void readMatrix(int matrix[100][100], int noRows, int noCol)
{
int i, j;
for (i = 0; i < noRows; i++)
for (j = 0; j < noCol; j++)
{
printf("\na[%d][%d]=", i, j); scanf("%d", &matrix[i][j]);
}
}
void printMatrix(int matrix[100][100], int noRows, int noCol)
{
int i, j;
for (i = 0; i < noRows; i++)
{
for (j = 0; j < noCol; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
【问题讨论】:
-
描述没有说明问题是什么。
-
您不能从数组中删除行。您可以复制一行之后的所有行以删除左一个位置。
-
这看起来像 C++,但您已将其标记为 C。请修复。
-
@MYousefi 我编辑了它,但我认为很明显问题是我无法让它工作