2016-04-14 2 views
0
class Program 
{ 
    static void Main(string[] args) 
    { 
     Random rnd = new Random(); 
     int[] mass = new int[10]; 
     for (int i = 0; i < mass.Length; i++) 
     { 
      mass[i] = rnd.Next(0, 10); 
     } 
     Console.WriteLine("display random Massive: \n"); 
     foreach (var i in mass) 
     { 
      Console.Write("{0} ", i); 
     } 
     Console.WriteLine("\n"); 
     int max = mass.Max(); 
     Console.WriteLine("max value in Massive = {0}", max); 

     Console.ReadLine(); 
    } 
} 

мой код дает мне максимальное значение в массиве, мне нужно получить максимальное нечетное значение. Как получить максимальное нечетное значение?получить максимальное нечетное число

+0

Для разъяснения целей: вы знаете логику отставания от нечетных значений, не так ли? Нечетные значения можно разделить на. Вот почему x Modulo 2 должен быть 0, и это будет условие, которое вам нужно реализовать. Вот почему все ответы включают x% 0 ... – Jannik

ответ

0

просто изменить

int max = mass.Max(); 

в

int max = mass.Where(x=>(x%2)==1).Max(); 
2

Вы можете использовать Linq, чтобы сделать это легко

mass.Where (x => x % 2 != 0).Max(); 
1

Вы можете сделать это проще с помощью LINQ:

static void Main(string[] args) 
{ 
    Random rnd = new Random(); 
    int[] mass = Enumerable.Range(0, 10).Select(i => rnd.Next(0, 10)).ToArray(); 
    Console.WriteLine("display random Massive: "); 
    Console.WriteLine(string.Join(" ", mass)); 
    Console.WriteLine(); 
    int max = mass.Where(i => (i & 1) == 1).Max(); 
    Console.WriteLine("max value in Massive = {0}", max); 

    Console.ReadLine(); 
} 

Пояснения:

  • Я инициализировать массив, генерируя 10 случайных чисел, преобразование их в массив
  • Я вывода их с помощью string.Join
  • использованием Where с тестированием, что последний бит установлен фильтр для нечетных чисел
  • призывающих Max только на этих нечетных чисел.

Обратите внимание, что вам не нужно использовать \n, как Console.WriteLine добавляет новую строку в конце.

0

Я asuming вы новичок, как и я не понимаете, пока LINQ

Объявите список для проведения нечетных значений

List<int> oddList = new List<int>(); 

T курица в вашем методе foreach

foreach (var i in mass) 
    { 

     if (i % 2 != 0) //check that number is odd 

      { 
        oddList.Add(i); //add odd randoms to list 

      { 

    } 

Console. WriteLine(oddList.Max().ToString()); 
Смежные вопросы