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

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

25.06.2018, 13:10. Показов 3115. Ответов 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
33189 / 21485 / 8233
Регистрация: 22.10.2011
Сообщений: 36,866
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru