Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 6
1

Как в массиве найти элемент, находящийся перед максимальным

23.02.2011, 05:36. Показов 3489. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
подскажите как в массиве найти элемент находящмйся перед максимальным т.е. если массив {1,2,3,4,5},то нужно найти элемент 4
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2011, 05:36
Ответы с готовыми решениями:

Вставить нулевой элемент перед максимальным элементом в одномерном массиве
Решить через процедуры или функции 1.Вставить нулевой элемент перед максимальным элементом в...

Найти сумму элементов, которые стоят перед максимальным элементом в двумерном массиве
Дана прямоугольная таблица, которая содержит не более 10 строк и не более 10 столбцов. Найти сумму...

Удалить первый положительный элемент массива; вставить новый элемент перед первым максимальным элементом
Дан целочисленный массив размера N. Как удалить первый положительный элемент ? Как вставить новый...

Найти в массиве В максимальный элемент, поменять строку с максимальным элементом на вектор В
Дана матрица А(5,5). Сформировать одномерный массив В(5), состоящий из максимальных элементов по...

5
Заблокирован
23.02.2011, 06:10 2
Цитата Сообщение от D1STEMPER Посмотреть сообщение
подскажите как в массиве найти элемент находящмйся перед максимальным т.е. если массив {1,2,3,4,5},то нужно найти элемент 4
Допустим, массив объявлен так:
C#
1
var array = new[] {1, 2, 3, 4, 5};
Самый первый вариант, который приходит в голову:
C#
1
int value = array[Array.IndexOf(array, array.Max()) - 1];
Тут используется LINQ. Если нужно без него, то так:
C#
1
2
3
4
5
6
7
int maxIdx = 0;
 
for (int i = 1; i < array.Length; i++)
    if (array[i] > array[maxIdx])
        maxIdx = i;
 
int value = array[maxIdx - 1];
Но, вообще говоря, оба варианта некорректны. И задача поставлена некорректно. Потому что не сказано, что делать, если максимальный элемент расположен в начале массива.

Поэтому, правильнее было бы так:
С LINQ:
C#
1
2
3
4
5
6
int idx = Array.IndexOf(array, array.Max()) - 1;
 
if (idx < 0)
    throw new ApplicationException("Max element index == 0");
 
int value = array[idx];
Без LINQ:
C#
1
2
3
4
5
6
7
8
9
10
int maxIdx = 0;
 
for (int i = 1; i < array.Length; i++)
    if (array[i] > array[maxIdx])
        maxIdx = i;
 
if (maxIdx == 0)
    throw new ApplicationException("Max element index == 0");
 
int value = array[maxIdx - 1];
0
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 6
23.02.2011, 11:21  [ТС] 3
не я неправельно обозначил ))) нужно найти предмаксимальный элемент массива т.е. если массив {1,9,3,6,8}, то найти надо 8
0
Заблокирован
23.02.2011, 23:51 4
Цитата Сообщение от D1STEMPER Посмотреть сообщение
не я неправельно обозначил ))) нужно найти предмаксимальный элемент массива т.е. если массив {1,9,3,6,8}, то найти надо 8
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
int maxIdx = 0;
 
for (int i = 1; i < array.Length; i++)
    if (array[i] > array[maxIdx])
        maxIdx = i;
 
int targetId = 0;
 
for (int i = 1; i < array.Length; i++)
    if (array[i] > array[targetId] && array[i] < array[maxIdx])
        targetId = i;
 
int value = array[targetId];
0
91 / 24 / 2
Регистрация: 18.02.2011
Сообщений: 59
23.02.2011, 23:55 5
Сортируйте весь масив, и выводите передпоследний элемент.
0
42 / 42 / 9
Регистрация: 27.06.2010
Сообщений: 91
24.02.2011, 10:41 6
данный вариант будет работать немного быстрее N вместо 2N.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
int[] intArray = { 3, 78, 1, 80, 3, 69, 0, 4, 2, 7, 43 };
 
int maxValue = 0;
int preMaxValue = 0;
 
for (int i = 0, length = intArray.Length; i < length; i++)
{
        if (maxValue < intArray[i])
                {
                    preMaxValue = maxValue;
                    maxValue = intArray[i];
                }
}
0
24.02.2011, 10:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2011, 10:41
Помогаю со студенческими работами здесь

В заданном массиве найти элемент, расположенный между первым нулевым и максимальным элементом
Из элементов массива А из n элементов, расположенных между первым нулевым и максимальным (в...

В заполненном массиве найти первый отрицательный элемент и поменять его местами с максимальным
В заполненном массиве найти первый отрицательный элемент и поменять его местами с максимальным.

Как найти max элемент в двумерном массиве, и как найти min элемент в одномерном массиве?
Не работает программа, ошибки. Вроде понял, как сделать min и max элементы для одномерного массива,...

В массиве все элементы, стоящие перед максимальным, заменить на 0.
В массиве все элементы, стоящие перед максимальным, заменить на 0. Пример: из массива A: 3 2 1 5 4...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru