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

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

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

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

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

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

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

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

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

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

Не по теме:

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

0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.06.2018, 17:33 5
Лучший ответ Сообщение было отмечено 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
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
26.06.2018, 08:29 6
Цитата Сообщение от 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
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,797
26.06.2018, 08:32 7
Цитата Сообщение от TrollHammer Посмотреть сообщение
я проверку бы сделал, что index+1<masslength
А к чему? На начальном этапе условие не выполняется, - выход из цикла.
0
 Аватар для TrollHammer
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
26.06.2018, 08:43 8
Цитата Сообщение от nick42 Посмотреть сообщение
На начальном этапе условие не выполняется, - выход из цикла.
Тестово попробовал, загнал в конец массива максимальное число и как результат, получил 0, а должна быть в таком случае 1? Почему?
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
26.06.2018, 08:48 9
TrollHammer, про очистку верно, да

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

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
[golang] 80. Remove Duplicates from Sorted Array II
alhaos 28.01.2025
В предоставленном упорядоченном по возрастанию целочисленном слайсе, оставить уникальные элементы полюс один возможный дубликат. Вернуть количество таких элементов. / / . . .
Что такое внедрение зависимостей и для чего оно применяется
bytestream 27.01.2025
В современной разработке программного обеспечения одной из ключевых проблем является управление зависимостями между различными компонентами системы. Внедрение зависимостей (Dependency Injection, DI). . .
Как установить cellpadding и cellspacing в CSS
bytestream 27.01.2025
При создании веб-страниц с табличными данными разработчики часто сталкиваются с необходимостью правильного оформления внутренних и внешних отступов в таблицах. В традиционной разметке HTML для этих. . .
Чем отличаются public, protected, package-private и private в Java
bytestream 27.01.2025
В языке программирования Java механизм модификаторов доступа играет ключевую роль в реализации одного из фундаментальных принципов объектно-ориентированного программирования - инкапсуляции. . . .
Зачем нужно explicit в C++. Преобразование типов
bytestream 27.01.2025
В мире программирования на C++ управление преобразованием типов данных играет crucial роль в создании надежного и безопасного кода. Язык C++ предоставляет множество механизмов для контроля над. . .
Как создать удалённую (remote) ветку в Git
bytestream 27.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления кодовой базой. Одним из ключевых. . .
Как создать утечку памяти в Java
bytestream 27.01.2025
Утечка памяти в Java представляет собой ситуацию, когда программа неэффективно использует доступную память, удерживая ссылки на объекты, которые больше не нужны для работы приложения. Несмотря на. . .
КуМир: как решать задачи на числа
bytestream 27.01.2025
КуМир (Комплект Учебных МИРов) представляет собой уникальную образовательную среду программирования, разработанную специально для обучения основам алгоритмизации и программирования. Эта система. . .
Исполнитель Черепаха в КуМир: как решать задачи
bytestream 27.01.2025
Исполнитель Черепаха в системе КуМир представляет собой мощный образовательный инструмент, который помогает освоить основы программирования через визуальное представление результатов выполнения. . .
КуМир: как решать задачи на массивы
bytestream 27.01.2025
Массивы представляют собой важнейшую структуру данных в программировании, и система КуМир предоставляет удобные инструменты для работы с ними. В контексте КуМир массив можно представить как. . .
[golang] 26. Remove Duplicates from Sorted Array
alhaos 27.01.2025
Необходимо удалить дубликаты из предоставленного целочисленного отсортированного по взрастанию слайса, нужно изменить значения в слайсе и вернуть количество элементов. / / . . .
КуМир, исполнитель Робот. Решение задач
bytestream 27.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения программированию, которая была создана в Отделении информатики Российской Академии наук. Эта система разработана. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru