Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 16.07.2018
Сообщений: 7

Найти максимальный по модулю элемент массива и сумму элементов массива, отвечающих условию

18.08.2018, 17:28. Показов 8630. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) максимальный по модулю элемент массива;
2) сумму элементов массива, расположенных между первым и вторым положительными элементами.
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
Только нужно разбить на функции..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.08.2018, 17:28
Ответы с готовыми решениями:

Найти максимальный элемент массива и сумму элементов массива по условию
Доброе утро!...Уже и не знаю в чём дело....Вот тебе и заочное отделение:) Написать программу, работающую с одномерным вещественным...

Найти максимальный элемент массива; найти произведение элементов массива, удовлетворяющих условию
В одномерном массиве, состоящим из n целых элементов, вычислить: Номер максимального элемента массива; произведение элементов массива,...

Найти сумму тех элементов массива, цифровая запись которых дает четную сумму цифр, а также найти максимальный элемент массива
Вот, что есть.Помогите довести до ума! #include <cstdlib> #include <iostream> #include <math.h> using namespace std; void...

2
18.08.2018, 17:42
 Комментарий модератора 
qwerty1631998, пожалуйста, прочитайте правила форума.
Особое внимание обратите на пункт 4.3 (порядок именования тем).
0
 Аватар для SunFox25
7 / 6 / 2
Регистрация: 09.08.2018
Сообщений: 27
18.08.2018, 22:01
Вот моё решение.

ВНИМАНИЕ! Если вам этот код нужен для ВУЗовского задания, не забудьте стереть коментарий в функции main, а не то спалитесь.

Учтите, что в моём решение есть следующие пункты условии задачи, которые вы не уточнили:

При подсчёте суммы элементов, расположенных между первым и вторым положительными элементами.
-ноль не считается за положительное число
-сами положительные элементы не входят в сумму

При преобразовании массива таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
-у меня сортируется именно тот массив, который мы имеем

Кстати сортировку я сделал универсальной, не только для нулей.

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
 
using namespace std;
 
//декларации функций
void InitArray(int *a, int length);
void FindMaximum(int* a, int length, int* out, int* index);
bool FindSum(int* a, int length, int* sum, int* index1, int* index2);
int SortArray(int* a, int length, int numberstoend);
 
int main()
{
    int *a, length = 100; //массив переменной длины
    //далее массив инициализируется для данного примера
    //вы можете брать эти данные из другого места и другим способом
    //не забудьте стереть этот коментарий, если вам этот код нужен для ВУЗовского задания
    a = new int[length];
    int Minus = 1; //переменная для создания отрицательных элементов массива
    for (int i = 0; i < length; i++)
    {
        if ((i % 5) / 4 == 1) { Minus = 1; } //каждый пятый элемент - полжительное число
        else
        {
            if ((i % 6) / 5 == 1) { Minus = 0; } //каждый шестой элемент - ноль
            else {Minus = -1; } //остальные - отрицательные
        }
        a[i] = Minus * ((i * 37) % 50); //псевдослучайное заполнение элементов массива
    }
    //просмотреть элементы массива
    for (int i = 0; i < length; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
 
    int Maximum, MaximumIndex;
    //Ищем максимальный по модулю элемент и индекс первого максимального по модулю элемента
    FindMaximum(a, length, &Maximum, &MaximumIndex);
    cout << "Maximum Module Element: " << Maximum << endl;
    cout << "First Maximum Module Element Index: " << MaximumIndex << endl;
 
    int Sum, Index1, Index2;
    //Ищем сумму элементов, расположенных между первым и вторым положительными элементами
    if (FindSum(a, length, &Sum, &Index1, &Index2))
    {
        cout << "Sum: " << Sum << endl;
        cout << "First Positive Element Index: " << Index1 << endl;
        cout << "Second Positive Element Index: " << Index2 << endl;
    }
    else
    {
        //между положительными элементами массива нет элементов (стоят подряд)
        cout << "Cannot Find Sum" << endl;
    }
    //Перемещение всех нулей в конец массива
    cout << "Array Have " << SortArray(a, length, 0) << " Nulls" << endl;
}
 
//функция, возвращающая модуль числа
int IntegerModule(int integer)
{
    if (integer < 0) { return -integer; }
    else { return integer; }
}
 
//Функция поиска максимального по модулю элемента массива
//a - массив
//length - длина массива
//out - значение максимального по модулю элемента
//index - индекс первого максимального по модулю элемента в массиве. Если это вам не нужно, просто вырежте всё что с ним связано
void FindMaximum(int* a, int length, int* out, int* index)
{
    //int maximum = 0;
    *out = 0;
    for (int i = 0; i < length; i++)
    {
        if (IntegerModule(a[i]) > *out)
        {
            *out = IntegerModule(a[i]);
            *index = i; //если индекс не нужен, уберите эту строчку
        }
    }
}
 
//функция для подсчёта суммы элементов, расположенных между первым и вторым положительными элементами
//a - массив
//length - длина массива
//sum - сумма элементов, расположенных между первым и вторым положительными элементами
//index1 - индекс первого максимального по модулю элемента в массиве
//index2 - индекс второго максимального по модулю элемента в массиве
bool FindSum(int* a, int length, int* sum, int* index1, int* index2)
{
    //ищем первый положительный элемент массива
    for (int i = 0; i < length; i++)
    {
        if (a[i] > 0) //ноль не считается за положительное число, измените на ">=" если должен считаться
        {
            *index1 = i; //записываем индекс первого положительного элемента массива
            break;//i = length; //завершаем цикл
        }
    }
    //ищем второй положительный элемент массива
    for (int i = *index1 + 1; i < length; i++)
    {
        if (a[i] > 0) //ноль не считается за положительное число, измените на ">=" если должен считаться
        {
            *index2 = i; //записываем индекс первого положительного элемента массива
            break;//i = length; //завершаем цикл
        }
    }
    //если между положительными элементами массива нет элементов, возвращаем false
    if (*index1 + 1 == *index2) { return false; }
    //считаем сумму
    *sum = 0;
    //for (int i = *index1; i <= *index2; i++) если полож-ные числа должны входить в сумму
    for (int i = *index1 + 1; i < *index2; i++)
    {
        *sum += a[i]; //складываем элементы массива
    }
    return true;
}
 
//Функция для перемещения всех определённых элементов (например нулей) в конец массива
//a - массив
//length - длина массива
//numberstoend - элементы, которые следует переместить в конец массива.
//Если функция не должна быть универсальной, просто сотрите этот аргумент, а в функции замените его на 0
int SortArray(int* a, int length, int numberstoend)
{
    int Last = length; //длина массива без отсортированных элементов
    int Count = 0; //счётчик количества элементов, которые следует переместить в конец массива
    for (int i = 0; i < Last; i++)
    {
        if (a[i] == numberstoend)
        {
            Count++; //увеличиваем счётчик
            for (int i2 = i; i2 < Last; i2++)
            {
                a[i2] = a[i2 + 1]; //смещаем все последующие элементы на один элемент назад
            }
            Last--; //сдвигаем длину массива без отсортированных элементов
            a[Last] = numberstoend; //записываем отсортированный элемент в конец массива
        }
    }
    return Count; //возвращаем количество элементов, которые мы переместили в конец массива
}
Не забудьте пометить в теме лучший ответ и поставить спасибо всем кто вам помог .
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2018, 22:01
Помогаю со студенческими работами здесь

Вычислить максимальный по модулю элемент массива и сумму элементов, расположенных между заданными элементами
В одномерном массиве,состоящем из n вещественных элементов вычислить : 1)максимальный по модулю элемент массива 2)сумму элементов...

Найти максимальный по модулю элемент массива и его номер, сумму расположенных между первым и последним положит
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) максимальный по модулю элемент массива и его номер; 2) сумму...

Массивы. Найти минимальный по модулю элемент массива. Найти сумму модулей элементов после первого нуля
народ,траблы,никак не могу понять массивы,подскажите пожалуйста /*1. Найти минимальный по модулю элемент массива. 2. Найти сумму...

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

Найти максимальный по модулю элемент массива
Хотелось бы выразить большую благодарность Croessmah'у за оказанную помощь. Позвольте ещё раз обратиться за помощью: В одномерном...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru