1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 134
|
|
1 | |
Массив: Как найти номер последнего отрицательного элемента?26.10.2013, 16:53. Показов 8920. Ответов 21
Метки нет (Все метки)
0
|
26.10.2013, 16:53 | |
Ответы с готовыми решениями:
21
Найти номер последнего отрицательного элемента массива Найти номер последнего отрицательного элемента в массиве В массиве N элементов найти номер последнего отрицательного элемента Найти номер последнего из столбцов матрицы, не содержащих ни одного отрицательного элемента |
Модератор
8902 / 6672 / 917
Регистрация: 14.02.2011
Сообщений: 23,501
|
|
26.10.2013, 16:56 | 2 |
очень просто
последний- это первый с конца обходи массив с конца и проверяй значения как только появился отрицательный то выходи из цикла, это и будет последний отрицательный
1
|
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 134
|
|
26.10.2013, 16:57 [ТС] | 3 |
а кодом можешь помочь?
0
|
26.10.2013, 17:01 | 4 | |||||
Будем считать что массив длинной N заполнен.
0
|
Модератор
8902 / 6672 / 917
Регистрация: 14.02.2011
Сообщений: 23,501
|
||||||
26.10.2013, 17:07 | 5 | |||||
а что нулевой( первый) элемент не будем проверять?
примерно так
0
|
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 134
|
||||||
26.10.2013, 17:38 [ТС] | 6 | |||||
Массив из 10 вещественных чисел задан случайным образом.Найти номер последнего отрицательного элемента.
Помогите пожалуйста с кодом.Исправьте.
0
|
26.10.2013, 17:49 | 7 | |||||
0
|
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 134
|
|
26.10.2013, 17:53 [ТС] | 8 |
Спасибо, что исправили.а с блок-схемой алгоритма можете помочь?
0
|
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 134
|
|
26.10.2013, 17:57 [ТС] | 10 |
Хоть так пусть будет.
0
|
26.10.2013, 18:00 | 11 |
Начало -> Ввод [a1, a2, a3, a4, a5, a6, a7, a8, a9, a10] -> Условие [ i=10; если a[i] < 0 ] - (Условие выполняется)[Вывод i]; Иначе (условие не выполняется) [i=i-1] и возвращаемся к условию;
0
|
Модератор
8902 / 6672 / 917
Регистрация: 14.02.2011
Сообщений: 23,501
|
||||||
26.10.2013, 18:47 | 13 | |||||
если нет ни одного отрицательного элемента и если отрицательный лежит в первой(нулевой) ячейке
результат будет одинаков и зачем вводить дополнительную переменную? Добавлено через 4 минуты и зачем ты в i записываешь N? вот твой код поправленный
0
|
26.10.2013, 19:30 | 14 |
У вас ответ хранится в I, а вы выводите N;
А по поводу доп переменной - удобнее счетчик имеет внутри цикла отдельно,а результат отдельно. А компилятор вам выдаст ошибку инициализации.
0
|
Модератор
8902 / 6672 / 917
Регистрация: 14.02.2011
Сообщений: 23,501
|
|
26.10.2013, 19:50 | 15 |
а это не у меня
это я код ТС скопировал поправил, а там не заметил спасибо что обратил внимание это почему еще насчет удобства вопрос спорный "Не плодите сущности, без необходимости" (с)«Бритва О́ккама» оптимизировать нужно учится на уровне алгоритмов, здесь у тебя проигрыш и в скорости, лишнее присвоение, и в памяти,лишняя переменная можно вообще было вывести прямо в цикле сообщение если нашлось заданное число
0
|
26.10.2013, 20:02 | 16 |
Ну если убрать N- будет норм.
Да, насчет вывода в цикле бесспорно удобнее. Не понимаю зачем вы делаете проверку i>-1 если можно проверять i>=0; А если выводить вне цикла - лучше иметь счетчик отдельно и отдельно переменную вывода, счетчик может понадобится еще для каких то подзадач. В целом насчет оптимизации вы правы.
0
|
Модератор
8902 / 6672 / 917
Регистрация: 14.02.2011
Сообщений: 23,501
|
|
26.10.2013, 21:41 | 17 |
да и при N будет нормально, ошибки не будет, просто на экран выведется мусор, переменная то не инициализирована
этот код выполнит одно и тоже но при записи i>=0 возможен вариант что будут две проверки на больше и на равно неизвестно как компилятор откомпилирует, оптимизирует или нет, на каком камне это будет исполнятся а так я просто показал еще один путь решения не люблю мыслить шаблонно так если он не нужен снаружи объявляй его в цикле да и счетчик это не приговор можешь в одном цикле объявить i а в другом ii почитай Криса Касперски "Техника отладки программ без исходных кодов" "Основы хакерства" и другие книги и поймешь что получается в исполняемом коде, хороший оптимизатор может так перелопатить твою программу, что её никто не узнает одну зачем? он итак известен 5 а что будет, если я введу100 выход за пределы массива и где ввод всех элементов массива? и где проверка на отрицательный элемент? k будет равно n
0
|
26.10.2013, 23:39 | 18 | |||||
спасибо, почитаю. Только начинаю программировать, поэтому много не знаю)
Код правильный: Добавлено через 6 минут
0
|
Модератор
8902 / 6672 / 917
Регистрация: 14.02.2011
Сообщений: 23,501
|
|||||||||||
26.10.2013, 23:40 | 19 | ||||||||||
так то лучше, но если пользователь введет 100000????
выход: выделять память под массив динамически
1
|
26.10.2013, 23:42 | 20 |
Обычно в таких задачах указаны лимиты, а с динамическими массивами у меня всегда какие-нибудь ошибки вылезают.
Но спасибо что исправили) Буду знать как такое использовать)
0
|
26.10.2013, 23:42 | |
26.10.2013, 23:42 | |
Помогаю со студенческими работами здесь
20
В квадратной матрице найти номер первого отрицательного элемента в строке и составить из них массив. Для каждой строки найти номер первого отрицательного элемента и записать данные в новый массив Найти номер последнего максимального элемента последовательности используя одномерный массив Для каждой строки матрицы найти номер первого отрицательного элемента, и записать данные в новый массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |