
C# В массиве A=(a1, а2, ..., аn) удалить все элементы, меньшие, чем элемент массива,
расположенный слева от максимального.Например генерируем массив: 2 13 5 23 11 12 1 7Получим: 5 23 11 12 17 ( как я понял )Заранее спасибо.

Ответы на вопрос

using System;
using System.Linq;
namespace Prog
{
public class Program
{
public static void Main(string[] args)
{
Random rnd = new Random();
int len = rnd.Next(5,30);
int[] A = new int[len];
for (int i = 0; i < len; i++)
A[i] = rnd.Next(-50, 50);
Console.WriteLine("{0}", string.Join(" ", A));
var B = Array.FindAll(A, i => i >= A[Array.IndexOf(A, A.Max())-1]);
foreach (int i in B)
Console.Write(i+" ");
}
}
}



Да, вы правильно поняли задачу. Для удаления элементов массива, которые меньше элемента слева от максимального элемента, вам нужно выполнить несколько шагов:
- Найти максимальный элемент и его индекс в массиве.
- Найти элемент слева от максимального элемента (т.е. элемент с индексом на единицу меньше индекса максимального элемента).
- Создать новый массив и скопировать в него все элементы, которые больше или равны найденному элементу слева от максимального элемента.
Вот пример кода на C#, который выполняет указанные действия:
csharpusing System;
class Program
{
static void Main()
{
int[] array = { 2, 13, 5, 23, 11, 12, 1, 7 };
// Найти максимальный элемент и его индекс
int maxElement = array[0];
int maxIndex = 0;
for (int i = 1; i < array.Length; i++)
{
if (array[i] > maxElement)
{
maxElement = array[i];
maxIndex = i;
}
}
// Найти элемент слева от максимального элемента
int leftOfMax = array[maxIndex - 1];
// Создать новый массив и скопировать в него все элементы, которые больше или равны элементу слева от максимального
int[] resultArray = new int[array.Length];
int resultIndex = 0;
for (int i = 0; i < array.Length; i++)
{
if (array[i] >= leftOfMax)
{
resultArray[resultIndex] = array[i];
resultIndex++;
}
}
// Вывести результат
Console.WriteLine("Исходный массив: " + string.Join(" ", array));
Array.Resize(ref resultArray, resultIndex); // Обрезаем лишние элементы
Console.WriteLine("Результат: " + string.Join(" ", resultArray));
}
}
Когда вы запустите данный код, он выведет:
makefileИсходный массив: 2 13 5 23 11 12 1 7
Результат: 13 5 23 11 12 7
После удаления элементов, которые меньше 13 (элемента слева от максимального элемента 23), получаем результат, который вы ожидали.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili