Изменение индекса в массиве - C#

Узнай цену своей работы

Формулировка задачи:

Я разу не программист. У меня есть массив чисел размерностью 10. Он заполняется числами от 1 до 10 случайно. Числа в массиве могут повторяться. Теперь надо взять 5 самых старших чисел из этого массива, но таким образом, чтобы они шли по порядку, например 10 9 8 7 6. Если такой комбинации нет, то ничего не делать. Также нужно сделать так, чтобы считало ещё и 4 3 2 1 0. 0 - это число 10 в этом массиве, если оно есть. В общем, если есть числа 4 3 2 1 и 10, то это бы считалось, как 1 2 3 4 10, потому что 10 это якобы число 0, которого нет. Но если есть 10, и нет комбинации чисел 10 9 8 7 6, то оно должно считаться за 0 только для комбинации 0 1 2 3 4. Вот Я не знаю, как сделать такую комбинацию с текущим положением чисел и индексов. Что нужно изменить, чтобы так получилось? И ещё. Тот же массив, только теперь надо взять просто 5 самых старших чисел не попорядку. Какими бы они не были и сколько бы раз не повторялись. Спасибо.

Решение задачи: «Изменение индекса в массиве»

textual
Листинг программы
  1. using System;
  2.  
  3. namespace Nums2
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             int n = 5;
  10.             int[] A = new int[10];
  11.             Random r = new Random();
  12.             Console.Write("Начальный массив: ");
  13.             for (int i = 0; i < A.Length; i++)
  14.             {
  15.                 A[i] = r.Next(1, 11);
  16.                 Console.Write(A[i] + " ");
  17.             }
  18.             Console.WriteLine();
  19.  
  20.             // Нужно скопировать массив, чтобы второй вариант считался правильно
  21.             int[] B = new int[A.Length];
  22.             Array.Copy(A, B, A.Length);
  23.  
  24.             // Теперь сортируем массив B, сразу по убыванию
  25.             Array.Sort(B, (x, y) => y - x);
  26.  
  27.             // Выводим 5 элементов
  28.             Console.Write("\nПять наибольших элементов: ");
  29.             for (int i = 0; i < 5; i++)
  30.                 Console.Write(B[i] + " ");
  31.             Console.WriteLine();
  32.  
  33.             // Теперь заполяем ту хитрую таблицу
  34.             // Справа на лево
  35.             int[] F = new int[A.Length];
  36.             for (int i = A.Length - 2; i >= 0; i--)
  37.             {
  38.                 // Если правый ээлемент меньше на единицу
  39.                 if (A[i] == A[i + 1] + 1)
  40.                 {
  41.                     // То прибавляем к его длине "правильного" хвоста
  42.                     // единицу
  43.                     F[i] = F[i + 1] + 1;
  44.                 }
  45.             }
  46.  
  47.             // Теперь ищем индекс максимального элемента массива A
  48.             // у которого F больше 4
  49.             int index = -1;
  50.             for (int i = 0; i < A.Length; i++)
  51.             {
  52.                 if (index != -1 && A[index] < A[i] && F[i] >= 4)
  53.                     index = 4;
  54.             }
  55.  
  56.             if (index == -1)
  57.             {
  58.                 Console.WriteLine("\nНет нужной подпоследовательности");
  59.             }
  60.             else
  61.             {
  62.                 Console.WriteLine("Подпоследовательность:");
  63.                 for (int i = 0; i < 5; i++)
  64.                     Console.Write(A[i + index] + " ");
  65.                 Console.WriteLine();
  66.             }
  67.  
  68.             Console.ReadLine();
  69.  
  70.         }
  71.     }
  72. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы