#c#
Вопрос:
Я пытаюсь найти наименьшее число в динамическом 2d массиве, но я попал в блок и не могу понять, как это сделать. Я сделал всю настройку и заполнил все значения.
using System;
namespace _2D_Array
{
class Program
{
static void Main(string[] args)
{
// Create integers n and r and set up the 2D array
int n = 5;
int[,] a;
int R = 50;
int x;
a = new int[n 1, n 1];
// Create number input randomizer
Random r = new Random();
for (int i = 1; i <= n; i)
for (int j = 1; j <= n; j)
a[i, j] = r.Next(1, R);
// Print array with random numbers to screen to check set up is correct for i and j
Console.Write(" ");
for (int i = 1; i <= n; i)
Console.Write(i.ToString("00" " "));
Console.WriteLine();
Console.WriteLine();
for (int i = 1; i <= n; i)
{
Console.Write(i.ToString("00" " "));
for (int j = 1; j <= n; j)
Console.Write(a[i, j].ToString("00" " "));
Console.WriteLine();
}
// Get Search Value
Console.Write("What's the value to look for? ");
x = int.Parse(Console.ReadLine());
// look through the array
for (int i = 1; i <= n; i)
{
for (int j = 1; j <= n; j)
// If the element is found
if (a[i, j] == x)
{
Console.Write("Element found at (" i ", " j ")n");
}
}
Console.Write(" Element not found");
```
Это все, что у меня пока есть. в конце концов, я хочу, чтобы у меня было наименьшее
значение из набора случайных чисел, установленных в моем массиве 5×5.
Комментарии:
1. Попробуйте назначить
min
первое значение в массиве вместо 0. Вы также можете инициализировать его значением, которое, как вы знаете, больше любого значения в массиве, напримерInt32.MaxValue
. Вы уверены, что хотите использовать<=
вместо<
в своих циклах? Большинство обычных циклов, подобных этому , использовали<
бы, но так как большая часть вашего кода отсутствует, трудно сказать наверняка.2. Что такое
n
? И что это за типa
?3. n-это значение int, а a-это просто имя моего массива
Ответ №1:
Прежде всего, отформатируйте свой код: трудно читаемый код трудно отлаживать.
Часто мы можем запросить массив с помощью Linq:
using System.Linq;
...
int min = a.OfType<int>().Min();
Console.Write($"The smallest element is {min}");
Если вам нужны старые добрые вложенные циклы:
// not 0! What if min = 123?
// Another possibility is min = a[0, 0]; - min is the 1st item
int min = int.MaxValue;
// note a.GetLength(0), a.GetLength(0): n is redundant here
// and there's no guarantee that we have a square array
for (int r = 0; r < a.GetLength(0); r)
for (int c = 0; c < a.GetLength(1); c)
min = Math.Min(min, a[r, c]);
Console.Write($"The smallest element is {min}");