Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2015, 20:21   #1
_Andriy_
 
Регистрация: 18.06.2015
Сообщений: 5
По умолчанию Помогите с идеей - как найти предпоследний отрицательный элемент массива

Доброго времени суток товарищи программисти) Подскажите пожалуйста как найти предпоследний отрицательный элемент массива.
_Andriy_ вне форума Ответить с цитированием
Старый 18.06.2015, 20:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В цикле с конца массива второй отрицательный ищи
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.06.2015, 21:57   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Для этого я бы посоветовал завести счётчик отрицательных элементов. При нахождении отрицательного элемента счётчик увеличивать на 1 (а в начале его сделать равным нулю). Как только счётчик стал равным двум, остановить поиск и гордо заявить: "Вот он, я его нашёл"
Вадим Мошев вне форума Ответить с цитированием
Старый 18.06.2015, 22:57   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Если на СИ, то:

ссыль

добавить только пару условий (для отрицательных чисел чтоб только работала программа)

Либо второй вариант, сортировка по возрастанию, а массив[1]-есть второй по величине элемент
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.06.2015, 05:42   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Я предлагаю завести переменную флаг, которая будет например равна false в начале. И начинать проверку с конца массива. Только встретили первое отрицательное число, флаг переключили в true. А дальше идет условие если число отрицательное и флаг true вывести это число и завершить цикл.
Как то сумбурно, но у меня сейчас каша в голове.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 22.06.2015, 23:51   #6
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Подскажите пожалуйста как найти предпоследний отрицательный элемент массива.
Делаете функцию поиска первого с конца(то бишь последнего) отрицательного элемента в некой последовательности.

Если элемент найден, то запускаете эту функцию еще раз, только в качестве последовательности передаете уже не весь массив, а оставшуюся не просмотренную часть.
Результатом второго поиска будет предпоследний отрицательные элемент, ну или ошибка, если такого элемента нет.

Цитата:
Либо второй вариант, сортировка по возрастанию, а массив[1]-есть второй по величине элемент
Второй по величине != предпоследний в исходном массиве
Croessmah вне форума Ответить с цитированием
Старый 23.06.2015, 08:46   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Включу свой обфускатор С++.
Код:
/* функция поиска предпоследнего отрицательного элемента массива
   если найден - вернёт индекс,
   если не найден - вернёт -1 */
int Search(int* X, int Count)
{
  int Total = 0;
  int* Y = X + Count;
  while ((Y-- > X) && (Total != 2)) Total += *Y ? 1 : 0;
  return (Total == 2) ? (int)(X - Y) : -1;
}
ВНИМАНИЕ!
УВАГА!!
АХТУНГ!!!
ААТТЕНШН!!!!

Shit-code detected!
Код не отлаживал. Писал на заборе!


Как гритца, надите 10 ошибков.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить из массива первый отрицательный элемент. EasyMak Помощь студентам 4 19.01.2015 17:40
В каджом столбце массива А поменять местами первый отрицательный элемент с последним элементом столбца. Carmen Помощь студентам 1 31.05.2011 19:41
найти первый отрицательный элемент массива имеющий чётный номер (Delphi) Vanger Помощь студентам 5 25.01.2011 11:41
как записать предпоследний элемент очереди в ячейку? taorange Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2010 21:38