解决 如何找到矩阵中最小的元素以及该元素所在的行?

佐城

会员
已加入
2020年7月22日
留言内容
13
编程经验
Beginner
大家好。我的任务有问题。任务是:"
编写一个C#程序,在n个月内从用户处读取m个制造业部门中制成品的价值,然后确定并打印生产率最低的月份。"
我意识到生产力在生产商品价值最低的月份中最低。我的问题是如何写最低值所在的月份。首先,我必须找到矩阵中所有元素的最小值。如您所见,这就是我所做的。要查找该值所在的月份,我需要找到该值所在的行。 Month = row(示例1月是第一个月,它是第一行)。不幸的是,我不知道该如何编写代码。你能帮助我吗?

Code for this task:
 static void Main(string[] args)
        {
            Console.WriteLine(" Enter the number of months for which the value of the products is calculated ");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine(" Enter the number of manufacturing sectors ");
            int m = int.Parse(Console.ReadLine());
            int[,] c = new int[m, p];
            
            
            Console.WriteLine(" Enter the price for each month in each manufacturing sectors");

            for (int i = 0; i < n; i++)

            {
                
                Console.WriteLine("Month {0}:", i + 1);
                for (int j = 0; j < m; j++)
                {

                    Console.WriteLine("Manufacturing sector {0}: ", j + 1);
                    c[i, j] = int.Parse(Console.ReadLine());
                                                                                    
                }

                

            }
            int small = c[0 ,0];
            for (int i = 0; i < n; i++)
            { for(int j = 0; j < m; j++)
                {
                    if (small > c[i,j])
                    {
                        small = c[i, j];
                    }
                    
                }
              
            }
            Console.WriteLine(small);
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
You simply need to declare a second variable where you declare small 和 set it where you set small. You simply assign the current row index (which is presumably i) to that variable.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
Yes. Have smallsmallRow. When you update small, also update smallRow.

顺便说一句,您甚至不需要数组,除非稍后必须显示用户最初输入的所有数据。
 

佐城

会员
已加入
2020年7月22日
留言内容
13
编程经验
Beginner
我分配了当前行索引,但始终为零
这是代码
找到最小元素所在的行数:
int small = c[0 ,0];
//n is number of months
            int[] b = new int[n];
            int smallrow = b[0];

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                   
                    if (small > c[i, j])
                    {
                        small = c[i, j];
                        smallrow = b[i];
                    }

                }
               
               
            }
            Console.WriteLine(smallrow);
            Console.WriteLine(small);
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
The number i represents the row number. Why are you taking the value of b[i] ?

As a quick aside, in C# , when you allocate a new array like you are doing with int[] b = new int[n], all the elements of the array are initialized to zero. This explains why your smallrow is always zero.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
Stop 和 think about it. If you are storing data from from the first month in c[0, ...], 和 the second month in c[1, ...], etc. 和 you are using a variable to go to a particular row, wouldn't that variable tell you which month you are on?
 

佐城

会员
已加入
2020年7月22日
留言内容
13
编程经验
Beginner
哈哈哈哈哈,我做到了。这是代码。我解决了问题。
解决问题的方法:
 int small = c[0 ,0];

            int smallmonth = 0;

            for (int i = 0; i < n; i++)
            {

                for (int j = 0; j < m; j++)
                {

                    if (small > c[i, j])
                    {
                        small = c[i, j];

                        smallmonth = i;
                        
                    }

                }

            }
            Console.WriteLine("The least productive month: {0}. month",(smallmonth+1));
            Console.WriteLine("The lowest value produced is {0} $",small);
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
做得好!感觉很不错,可以自己解决,而不是我们只是给您答案正确吗?我称之为那种感觉"hacker's high".
 
最佳 底部