[英]Creating a new one-dimensional array from all positive elements of each row of a two-dimensional dynamic array in c#
我是一个新手程序员,所以有一些问题。 该程序仅显示一维数组中的 3 个正元素,尽管二维数组中可能有更多元素。
这是我的代码
using System;
namespace task_2
{
class arrays
{
public int[,] A = new int[3, 3];
public int[] B = new int[9];
public void two_dimensional_array()
{
Random rand = new Random();
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
A[i, j] = rand.Next(-100, 100);
}
}
Console.WriteLine("Two-dimensional array: ");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Console.Write("{0}\t", A[i, j]);
}
Console.WriteLine();
}
}
public void one_dimensional_array()
{
Console.WriteLine("\nA one-dimensional array with only positive elements: ");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (A[i, j] > 0)
B[i] = A[i, j];
}
}
for (int i = 0; i < 9; i++)
{
Console.WriteLine(B[i]);
}
}
}
class Program
{
static void Main()
{
Console.OutputEncoding = System.Text.Encoding.Default;
arrays a;
a = new arrays();
a.two_dimensional_array();
a.one_dimensional_array();
}
}
}
我在下面附上了结果的照片,其中只显示了三个积极因素:在此处输入图片描述
将此行编辑为:(如果您希望zero to be displayed instead of negative
)
//B[i] = A[i, j];
B[i*3+j] = A[i, j];
如果你不想negative numbers not to be displayed
:
int index=0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (A[i, j] > 0)
B[index++] = A[i, j];
}
}
for (int i = 0; i < index; i++)
{
Console.WriteLine(B[i]);
}
在您的方法one_dimensional_array()
中,您使用嵌套for
循环来检查A
中的所有项目并有条件地更新B
中的项目:
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (A[i, j] > 0)
B[i] = A[i, j];
}
}
使用i
和j
迭代A
的项目如您所料:您循环遍历三行和三列。
您使用i
遍历B
的索引的方式阻止您遍历B
的所有索引。 您实际上只是在索引 0、1 和 2 上循环(根据您在外部for
循环中i
的可能范围的说明)。
在您的嵌套循环中,您将点击if (A[i, j] > 0)
行九次。 i
、 j
、 A[i, j]
和B[i]
的值将更改如下:
| i | j | A[i, j] | B[i] |
|-----|-----|-----------|--------|
| 0 | 0 | A[0, 0] | B[0] |
| 0 | 1 | A[0, 1] | B[0] |
| 0 | 2 | A[0, 2] | B[0] |
|-----|-----|-----------|--------|
| 1 | 0 | A[1, 0] | B[1] |
| 1 | 1 | A[1, 1] | B[1] |
| 1 | 2 | A[1, 2] | B[1] |
|-----|-----|-----------|--------|
| 2 | 0 | A[2, 0] | B[2] |
| 2 | 1 | A[2, 1] | B[2] |
| 2 | 2 | A[2, 2] | B[2] |
因此,
B[0]
被赋予A
中第一行中的最后一个正值(如果该行中的任何值为正)B[1]
被赋予A
中第二行中的最后一个正值(如果该行中的任何值为正)B[2]
被赋予A
中第三行中的最后一个正值(如果该行中的任何值为正) 因此,您需要一种方法来遍历B
的所有索引(即0
-- 8
)。
可以根据已经存在的i
和j
值计算这样的参数:
变量 k = f(i, j)
可以按如下方式使用:
B[k] = A[i, j];
你能找出k
的表达式吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.