Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 9

Найти произведение элементов массива, расположенных после максимального по модулю элемента

25.06.2018, 13:10. Показов 3155. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Найти произведение элементов массива, расположенных после максимального по модулю элемента.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.06.2018, 13:10
Ответы с готовыми решениями:

Вычислить произведение элементов массива, расположенных после максимального по модулю элемента
Вообщем вот задачка: Произведение элементов массива, расположенных после максимального по модулю элемента. Упорядочение массив таким...

Произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами
Здравствуйте, помогите мне пожалуйста реализовать данный пример. Произведение элементов массива, расположенных между максимальным по...

Вычислить сумму модулей элементов массива, расположенных после минимального по модулю элемента - C++
Дан массив из N элементов (вещественные числа). Вычислить: 1) количество отрицательных элементов массива; 2) сумму модулей эле-ментов...

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
25.06.2018, 13:19
Ну и при чем тут Билдер? Обычный цикл, обычный перебор элементов массива. Ничего специфического для Билдера...
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.06.2018, 15:15
1)Объявляешь массив
2)В цикле берешь модуль каждого числа, записанного в массив, сравнивая и записывая в переменную max, если оно больше max, в переменную index записываешь индекс ячейки где хранится максимальное
3) теперь во втором цикле начиная с i = index перемножаешь элементы уже без модуля

Ну такое, написанная на коленке инструкция, но на мысли наведет)
1
25.06.2018, 15:37

Не по теме:

Цитата Сообщение от Electroflower Посмотреть сообщение
но на мысли наведет)
Эх, мечты. мечты... :D

0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.06.2018, 17:33
Лучший ответ Сообщение было отмечено antonkhizhenok как решение

Решение

Цитата Сообщение от D1973 Посмотреть сообщение
Эх, мечты. мечты...
.....

Добавлено через 41 секунду
Могу, конечно, написать быстренько, просто на работе сижу)

Добавлено через 32 минуты
Вот что получилось, комменты дольше писала чем код...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int masslength = StrToInt(Edit1->Text); //берем количество символов, которое задается в Edit1 на форме, как видно
int *mas = new int [masslength]; //тут объявляем массив чисел int размером с вышеобъявленный masslength
randomize(); 
 
//далее ниже заполняем массив рандомными числами в диапазоне -10..10 и выводим для наглядности в Edit2
for (int i = 0; i < masslength; i++) {
                                      mas[i] = (rand()%21)-10;
                                      Edit2->Text=Edit2->Text +' ' +mas[i];
                                      }
 
int max = abs(mas[0]); //в переменную  max записываем первый элемент массива
int index = 0; //в переменную  index записываем индекс первого элемента массива
 
//далее перебираем модули всех элементов массива, сравнивая с максимумом и если попадается что-то большее чем ранее объявленный максимум, то max переписываем, соответственно и index переписываем и выводим для наглядности все в Edit-ы 
for (int i = 0; i < masslength; i++) {
                                      if (abs(mas[i]) > max) {
                                                         max = abs(mas[i]);
                                                         index = i;
                                                         }
                                      Edit3->Text  =   max;
                                      Edit4->Text  =   index;
                                      }
int multiplication = 1; //объявляем переменную в которую запишется конечный резалт умножения
 
//в цикле ниже начиная с элемента стоящего  после максимального по модулю и до конца массива все перемножаем 
for (int i = index+1; i < masslength; i++) {
                                            multiplication = multiplication* mas[i];
                                            Edit5->Text  = multiplication;
                                           }
Добавлено через 12 минут
В общем все это можно вставить в батон, я так и сделала
Вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit2->Clear();
int masslength = StrToInt(Edit1->Text);
int *mas = new int [masslength];
//randomize();
for (int i = 0; i < masslength; i++) {
                                      mas[i] = (rand()%21)-10;
                                      Edit2->Text=Edit2->Text +' ' +mas[i];
                                      }
int max = abs(mas[0]);
int index = 0;
for (int i = 0; i < masslength; i++) {
                                      if (abs(mas[i]) > max) {
                                                         max = abs(mas[i]);
                                                         index = i;
                                                         }
                                      Edit3->Text  =   max;
                                      Edit4->Text  =   index;
                                      }
int multiplication = 1;
for (int i = index+1; i < masslength; i++) {
                                            multiplication = multiplication* mas[i];
                                            Edit5->Text  = multiplication;
                                           }
}
Соответственно на форме Button1, Edit1, Edit2, Edit3, Edit4, Edit5, не забудьте все подписать и вообще это задача на 10 минут, посидите, подумайте в следующий раз над задачей и получите кайф от результата.

Добавлено через 16 минут
Единственное, в моей программе, если попадается два одинаковых максимальных числа, например -6 -2 10 -2 10 2 -4 6 3 -1.
Тут две десятки, так вот у меня прога берет первую 10ку как максимальную и соответственно перемножает все что после нее стоит. Чтобы избежать этого, нужно в цикле где ищется max поставить вместо знака > знак >=, тогда будет брать уже следующую 10ку и с нее перемножать.
Вот так:
C++
1
2
3
4
5
6
7
8
for (int i = 0; i < masslength; i++) {
                                      if (abs(mas[i]) >= max) {
                                                         max = abs(mas[i]);
                                                         index = i;
                                                         }
                                      Edit3->Text  =   max;
                                      Edit4->Text  =   index;
                                      }
1
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
26.06.2018, 08:29
Цитата Сообщение от Electroflower Посмотреть сообщение
int *mas = new int [masslength];
а память почистить не надо после использования?

Добавлено через 3 минуты
Цитата Сообщение от Electroflower Посмотреть сообщение
for (int i = index+1; i < masslength; i++) {
* * * * * * * * * * * * * * * * * * * * * * multiplication = multiplication* mas[i];
* * * * * * * * * * * * * * * * * * * * * * Edit5->Text *= multiplication;
* * * * * * * * * * * * * * * * * * * * * *}
А тут бы я проверку бы сделал, что index+1<masslength
1
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
26.06.2018, 08:32
Цитата Сообщение от TrollHammer Посмотреть сообщение
я проверку бы сделал, что index+1<masslength
А к чему? На начальном этапе условие не выполняется, - выход из цикла.
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
26.06.2018, 08:43
Цитата Сообщение от nick42 Посмотреть сообщение
На начальном этапе условие не выполняется, - выход из цикла.
Тестово попробовал, загнал в конец массива максимальное число и как результат, получил 0, а должна быть в таком случае 1? Почему?
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
26.06.2018, 08:48
TrollHammer, про очистку верно, да

в конце нужно добавить

C++
1
delete mas;
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
26.06.2018, 08:51
Цитата Сообщение от Electroflower Посмотреть сообщение
delete mas;
Для освобождения динамически размещенного массива необходимо использовать следующую форму оператора delete:
delete [] переменная_указатель - delete [] mas;
1
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
26.06.2018, 09:21
TrollHammer, верно...блин, кто поспешит...
нужно добавить

C++
1
delete [] mas;
запускает деструктор для каждого элемента массива, иначе undefined behaviour обеспечен, я помню как вы меня учили в какой-то теме очистке памяти)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.06.2018, 09:21
Помогаю со студенческими работами здесь

Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента
Сумму модулей элементов массива, расположенных после первого отрицательного элемента. -&gt; это сделано. Также при вводе исключительно...

Найти сумму модулей элементов массива, расположенных после первого элемента, равного нулю
Народ помогите пж! Сумму модулей элементов массива, расположенных после первого элемента, равного нулю.

Найти сумму целых частей элементов массива, расположенных после последнего отрицательного элемента одномерного
Как найти сумму целых частей элементов массива, расположенных после последнего отрицательного элемента одномерного массива? у меня...

Сумма модулей элементов массива, после наименьшего по модулю элемента
Добрый день. Возникла проблема с решением задачки. Суть в том что в массиве нужно определить наименьший элемент по модулю и после этого...

Вычислить сумму элементов массива, расположенных после последнего элемента, равного нулю
Здравствуйте. Необходимо вычислить сумму элементов массива, расположенных после последнего элемента, равного нулю. В консольном варианте...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru