二维数组问题,怎样删除二维数组中的一行或多行?解决接结贴!

时间:2021-10-01 18:50:06
一个二维数组reslut[,]{{1,2,3,4,5},{3,4,6,10,14},{5,6,8,12,14},{9,10,11,12,15}}这样的数组 怎样判断其中的一行含有4个偶数 并删除含有4个偶数的那行。多谢!
PS:请注意这个数组有两行符合条件!

10 个解决方案

#1


没人回答 自己顶先!

#2


数据中的数据可以删除,但是把一行删除难度大了点,vb里还有redim,c#里是不是有替代品啊!

#3


int[,] result = {
{1,2,3,4,5},
{3,4,6,10,14},
{5,6,8,12,14},
{9,10,11,12,15}
};

for(int i = 0; i < 4; i++)
{
int flag = 0;
for(int j = 0; j < 5; j++)
{
if(result[i,j] % 2 == 0)
flag ++;
}
if(flag >= 4)
{
for(int j = 0; j < 5; j++)
{
//删除result[i,j]
}
}
}

#4


删除一行实际上就是把一行的元素一个一个删掉,放在一个方法里,感觉就是一次删除了一行,在计算机中,永远没有所谓的一次或同时这种概念。
只是在C#中数组一旦声明就是定长的,你这里的删掉应该怎么理解

#5


首先应该判断一行中有几个偶数 如果有四个的话 就把这行删除掉 如果偶数个数不是四个则继续判断
直到把这个二维数组判断完为止!

#6


在C#中不能删除数组中的元素的,只对修改元素的值!,你要删除,除非再新建一个少一行的数组,再把你要的数据放进去!很麻烦,但只有如此!代码和我之前贴的差不多!

#7


哦 多谢!我试下先!

#8


现在又出现这样的问题:如果第一行满足条件 会用0代替 (我是用0代替删除的行)但是发现循环不了
还有就是如果不是第一行满足条件 那就会根本不执行判断 
这是怎么回事呀!超级郁闷!

#9


int [,] reslut = {{1,2,4,8},{4,6,5,8},{3,5,8,9},{4,5,6,10},{5,7,8,12},{6,8,11,14}};
int len = reslut.Length/4;
int flag;
flag = 0;
for(int i =0;i<len;i++)
{
for(int j =0;j<4;j++)
{
if(reslut[i,j]%2 == 0)
{
flag++;
}
}
if(flag == 3)
{
for(int j=0;j<4;j++)
{
                      Array.Clear(reslut,i,4);
}
}
}
请帮我看看这段代码是怎么回事?  它只能循环到第一行!超郁闷!

#10


int[,] result = {
{1,2,3,4,5},
{3,4,6,10,14},
{5,6,8,12,14},
{9,10,11,12,15}
       };

for(int i = 0; i < 4; i++)
{
//判断三连数
for (int k=0; k<3; k++)
{
if ((num[i+1] == num[i]+1) && (num[i+2] == num[i]+2))
{
Array.Clear(result,i*5,5);
}
}

//判断偶数
int flag = 0;
for(int j = 0; j < 5; j++)
{
if(result[i,j] % 2 == 0)
flag ++;
}

if(flag >= 4)
{
Array.Clear(result,i*5,5);
}
}

#1


没人回答 自己顶先!

#2


数据中的数据可以删除,但是把一行删除难度大了点,vb里还有redim,c#里是不是有替代品啊!

#3


int[,] result = {
{1,2,3,4,5},
{3,4,6,10,14},
{5,6,8,12,14},
{9,10,11,12,15}
};

for(int i = 0; i < 4; i++)
{
int flag = 0;
for(int j = 0; j < 5; j++)
{
if(result[i,j] % 2 == 0)
flag ++;
}
if(flag >= 4)
{
for(int j = 0; j < 5; j++)
{
//删除result[i,j]
}
}
}

#4


删除一行实际上就是把一行的元素一个一个删掉,放在一个方法里,感觉就是一次删除了一行,在计算机中,永远没有所谓的一次或同时这种概念。
只是在C#中数组一旦声明就是定长的,你这里的删掉应该怎么理解

#5


首先应该判断一行中有几个偶数 如果有四个的话 就把这行删除掉 如果偶数个数不是四个则继续判断
直到把这个二维数组判断完为止!

#6


在C#中不能删除数组中的元素的,只对修改元素的值!,你要删除,除非再新建一个少一行的数组,再把你要的数据放进去!很麻烦,但只有如此!代码和我之前贴的差不多!

#7


哦 多谢!我试下先!

#8


现在又出现这样的问题:如果第一行满足条件 会用0代替 (我是用0代替删除的行)但是发现循环不了
还有就是如果不是第一行满足条件 那就会根本不执行判断 
这是怎么回事呀!超级郁闷!

#9


int [,] reslut = {{1,2,4,8},{4,6,5,8},{3,5,8,9},{4,5,6,10},{5,7,8,12},{6,8,11,14}};
int len = reslut.Length/4;
int flag;
flag = 0;
for(int i =0;i<len;i++)
{
for(int j =0;j<4;j++)
{
if(reslut[i,j]%2 == 0)
{
flag++;
}
}
if(flag == 3)
{
for(int j=0;j<4;j++)
{
                      Array.Clear(reslut,i,4);
}
}
}
请帮我看看这段代码是怎么回事?  它只能循环到第一行!超郁闷!

#10


int[,] result = {
{1,2,3,4,5},
{3,4,6,10,14},
{5,6,8,12,14},
{9,10,11,12,15}
       };

for(int i = 0; i < 4; i++)
{
//判断三连数
for (int k=0; k<3; k++)
{
if ((num[i+1] == num[i]+1) && (num[i+2] == num[i]+2))
{
Array.Clear(result,i*5,5);
}
}

//判断偶数
int flag = 0;
for(int j = 0; j < 5; j++)
{
if(result[i,j] % 2 == 0)
flag ++;
}

if(flag >= 4)
{
Array.Clear(result,i*5,5);
}
}