Как найти сумму элементов массива после максимального

Если писать на C++, то следует использовать стандартные алгоритмы, определенные ы языке C++.

В этом случае программа может выглядеть следующим образом.

#include <iostream>
#include <algorithm>
#include <numeric>
#include <iterator>
#include <cstdlib>
#include <ctime>

int main()
{
    const size_t N = 20;
    int a[N];

    std::srand((unsigned int)std::time(nullptr));

    std::generate(std::begin(a), std::end(a), [=] { return std::rand() % N; });

    for (int x : a) std::cout << x << ' ';
    std::cout << std::endl;

    int long long sum = std::accumulate(
        std::next(std::max_element(std::begin(a), std::end(a))),
        std::end(a), 0ll);

    std::cout << "sum = " << sum << std::endl;

    return 0;
}

Вывод программы на консоль может выглядеть как

8 17 16 11 9 10 5 1 3 17 6 17 3 6 4 12 10 11 1 3 
sum = 145

В этой программе заполняется массив случайными значениями от 0 до 20, а затем в одну строчку записано, как найти сумму элементов после максимального элемента.

Если вы со стандартными алгоритмами C++ не знакомы, то можете вместо них использовать обычные циклы. Например,

#include <iostream>
#include <cstdlib>
#include <ctime>

int main()
{
    const size_t N = 20;
    int a[N];

    std::srand((unsigned int)std::time(nullptr));

    for ( int &x : a ) x = std::rand() % N;

    for (int x : a) std::cout << x << ' ';
    std::cout << std::endl;

    size_t max_i = 0;

    for ( size_t i = 1; i < N; i++ )
    {
        if ( a[max_i] < a[i] ) max_i = i;
    }

    long long int sum = 0;

    for ( size_t i = max_i + 1; i < N; i++ ) sum += a[i];

    std::cout << "sum = " << sum << std::endl;

    return 0;
}

Фактически, эта программа эквивалентна показанной выше.

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

Если нужно найти сумму элементов после последнего максимального элемента, то в этом случае, например, в последней программе с циклами вам следует заменить условие в предложении

if ( a[max_i] < a[i] ) max_i = i;
             ^^^

на

if ( a[max_i] <= a[i] ) max_i = i;
             ^^^^^

0 / 0 / 0

Регистрация: 23.09.2019

Сообщений: 11

1

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

14.01.2020, 01:19. Показов 11916. Ответов 3


Студворк — интернет-сервис помощи студентам

1. В массиве X(N) найти сумму элементов массива, расположенных после максимального элемента

2. Упорядочить массив X(N) по возрастанию, найти сумму положительных элементов массива

Заранее спасибо)



0



Модератор

2544 / 1641 / 895

Регистрация: 16.10.2013

Сообщений: 4,860

Записей в блоге: 13

14.01.2020, 05:54

2

Вы хотите, чтобы вам с нуля программу написали? Ваши попытки, и что конкретно не получается, можно увидеть ?



0



MatteoCano

2 / 1 / 1

Регистрация: 12.11.2019

Сообщений: 9

15.01.2020, 19:05

3

Лучший ответ Сообщение было отмечено Ева007 как решение

Решение

Я новичок, делаю для практики, поэтому возможно, что существует вариант кода поменьше, для этих задач. Главное, что работает)
1.

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
#include <iostream>
#include <iomanip>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "");
    srand(time(NULL));
    int n, j, sum = 0;
    cout << "Введите размерность массива X(N): "; cin >> n;
    int* arr = new int[n];
    for (int i = 0; i < n; i++) {
        arr[i] = rand() % 50 - 30;
        cout << setw(3) << arr[i] << "  ";
    }
    int max = arr[0];
    for (int i = 0; i < n; i++) {
        if (arr[i] > max) {
            max = arr[i];
            j = i;
            ++j;
        }
    }
    for (int i = j; i < n; i++) {
        sum += arr[i];
    }
    cout << "nМаксимальный элемент: " << max << endl;
    cout << "Сумма элементов массива, стоящих после максимального элемента: " << sum << endl;
    return 0;
}

2.

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
#include <iostream>
#include <iomanip>
using namespace std;
 
int main() {
    setlocale(LC_ALL, "");
    srand(time(NULL));
    int n, j, tmp, sum = 0;
    cout << "Введите размерность массива X(N): "; cin >> n;
    int* arr = new int[n];
    for (int i = 0; i < n; i++) {
        arr[i] = rand() % 50 - 10;
        cout << setw(3) << arr[i] << "  ";
    }
    for (int i = 1, j; i < n; ++i)
    {
        tmp = arr[i];
        for (j = i - 1; j >= 0 && arr[j] > tmp; --j)
            arr[j + 1] = arr[j];
        arr[j + 1] = tmp;  
    }
    cout << "nnМассив после сортировки:n";
    for (int i = 0; i < n; i++) {
        cout << setw(3) << arr[i] << "  ";
        if (arr[i] > 0) {
            sum += arr[i];
        }
    }
    cout << "nnСумма положительных элементов массива: " << sum << endl;
    return 0;
}



1



Yetty

7427 / 5021 / 2891

Регистрация: 18.12.2017

Сообщений: 15,694

15.01.2020, 19:54

4

Ева007, одна тема – одна задача

сумма после первого максимального:

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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main() 
{    
    srand((int)time(0));
    int N, imax=0;
    cout << "N="; cin >> N;
    
    double *X = new double[N], sum=0.;
    
    for (int i = 0; i < N; i++) 
    {
        X[i]=rand()%9 + 1;
        if (X[i]>X[imax]) imax=i;
        cout << X[i] << " ";
    }      
 
    for (int i = imax+1; i < N; i++) 
        sum+=X[i];
        
    cout << "nlocal sum = " << sum << "n";
 
    delete[]X;
system("pause");
return 0;
}



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

15.01.2020, 19:54

4

Формулировка задачи:

Здравствуйте !
Задание : создать массив А, заполнить случайными величинами , вычислить сумму элементов размещенных после максимального элемента
например у нас массив 8 7 9 2 1 0 4 6
максимальный элемент 9 , сумма = 2+1+0+4+6

вот мой код но выдает ошибку

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication20
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите количество элементов в массиве А:");
int N = Convert.ToInt32(Console.ReadLine());
 
int[] A = new int[N];
 
Random random = new Random();
int rand;
for (int i = 0; i < N; i++)
{
rand = random.Next(0, 10);
A[i] = rand;
}
 
Console.WriteLine("исходный массив:");
 
for (int i = 0; i < N; i++)
Console.Write(A[i] + " ");
 
Console.WriteLine("summa:{0}",MyArray.MaxElemIndex(A,N));
 
Console.ReadKey(true);
}
 
}
public static class MyArray
{
public static int MaxElemIndex(int[] A, int N)
{
int maxIndex ;
int max = A[0];
for (int i = 1; i < N; i++)
{
if (A[i] > max)
max = A[i];
maxIndex = i;
}
 
int sum = 0;
for (maxIndex<N;maxIndex++)
{sum+=A[maxIndex];
}
 
return sum;
}
 
}
 
}

выдает ошибку в методе , ошибка связана с переменной maxIndex

помогите пожалуйста .

Код к задаче: «Сумма элементов массива после максимального»

textual

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication20
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите количество элементов в массиве А:");
            int N = Convert.ToInt32(Console.ReadLine());
 
            int[] A = new int[N];
 
            Random random = new Random();
            int rand;
            for (int i = 0; i < N; i++)
            {
                rand = random.Next(0, 10);
                A[i] = rand;
            }
 
            Console.WriteLine("Исходный массив:");
 
            for (int i = 0; i < N; i++)
                Console.Write(A[i] + " ");
 
            Console.WriteLine("summa: {0}", MyArray.MaxElemIndex(A, N));
 
            Console.ReadKey(true);
        }
 
    }
    public static class MyArray
    {
        public static int MaxElemIndex(int[] A, int N)
        {
            int maxIndex = 0;
            int max = A[0];
            for (int i = 1; i < N; i++)
            {
                if (A[i] > max)
                {
                    max = A[i];
                    maxIndex = i;
                }
            }
 
            int sum = 0;
            for (int i = maxIndex + 1; i < N; i++)
            {
                sum += A[i];
            }
 
        return sum;
        }
 
    }
 
}

Полезно ли:

5   голосов , оценка 3.600 из 5

Вася Борвей



Ученик

(87),
на голосовании



7 лет назад

Написать программу, которая в массиве Х (N) находит сумму элементов массива, расположенных после максимального элемента.

Голосование за лучший ответ

=Serge=

Просветленный

(35963)


7 лет назад

1.Ищем максимальный элемент и его индекс imax.
2.В цикле от imax+1 до конца массива суммируем элементы.
Нахождение imax тысячу раз расписано на ответах.
PS.Немного не так: “максимальный элемент c++” 438 ответов)). На паскале действительно тысячи)

Рассмотрим несколько примеров
использования массивов.

Для начала рассмотрим программу,
заполняющую массив произвольными
значениями и осуществляющую сортировку
элементов массива методом пузырька.

#include
“stdafx.h”

#include
“conio.h”

#include
“stdlib.h”

#include
“time.h”

#define
randomize() srand((unsigned)time(NULL));

#define
random(p) ((int)(rand()*p/RAND_MAX))

Void main()

{

randomize();

int
a[10];

char
flag;

srand(4);

for
(int
i=0; i<10; i++)

a[i]
= rand()*10;

for
(int
i=0; i<10; i++)

printf(“%d
“,
a[i]);

printf(“n”);

flag
= 1;

while(flag)

{

flag
= 0;

for
(int
i=0; i<10; i++)

if(a[i]>a[i+1])

{

int
temp = a[i];

a[i] = a[i+1];

a[i+1] = temp;

flag =1;

}

}

for
(int
i=0; i<10; i++)

printf(“%d
“,
a[i]);

getch();

}

В приведенном примере массив
инициализируется с помощью функции
rand(). Функция rand()
генерирует последовательность
псевдослучайных чисел. При каждом
обращении к функции возвращается целое
в интервале между нулем и значением
RAND_MAX,
которое в любой реализации должно быть
не меньше числа 32 767.

Далее будет выполняться цикл for до тех
пор, пока есть хотя бы одна пара соседних
элементов, которые нужно переставить.

5.4. Порядок выполнения работы

Лабораторная работа содержит индивидуальные
задания на

1) обработку одномерного массива;

2) обработку двухмерного массива.

Первое задание включает три задачи,
второе одну.

Необходимо для каждой задачи выполнить:

  1. словесную постановку;

  2. анализ постановки и формализацию
    задачи;

  3. разработку алгоритма;

  4. кодирование и отладку алгоритма;

  5. тестирование программы.

Отчет должен содержать описание всех
этапов решения задач.

5.5. Индивидуальные задания

5.5.1. Обработка одномерного массива

Вариант 1

В одномерном массиве, состоящем из n
вещественных элементов:

1) вычислить сумму отрицательных элементов
массива;

2) вычислить произведение элементов
массива, расположенных между максимальным
и минимальным элементами;

3) упорядочить элементы массива по
возрастанию.

Вариант 2

В одномерном массиве, состоящем из n
вещественных элементов:

1) вычислить сумму положительных элементов
массива;

2) вычислить произведение элементов
массива, расположенных между максимальным
и минимальным по модулю элементами;

3) упорядочить элементы массива по
убыванию.

Вариант 3

В одномерном массиве, состоящем из n
целых элементов:

1) вычислить произведение элементов
массива с четными номерами;

2) вычислить сумму элементов массива,
расположенных между первым и последним
нулевыми элементами;

3) преобразовать массив таким образом,
чтобы сначала располагались все
положительные элементы, а потом – все
отрицательные (элементы, равные 0, считать
положительными).

Вариант 4

В одномерном массиве, состоящем из n
вещественных элементов:

1) вычислить сумму элементов массива с
нечетными номерами;

2) вычислить сумму элементов массива,
расположенных между первым и последним
отрицательными элементами;

3) сжать массив, удалив из него все
элементы, модуль которых не превышает
12. Освободившиеся в конце массива
элементы заполнить нулями.

Вариант 5

В одномерном массиве, состоящем из n
вещественных элементов:

1) найти максимальный элемент массива;

2) вычислить сумму элементов массива,
расположенных до последнего положительного
элемента;

3) сжать массив, удалив из него все
элементы, модуль которых находится в
интервале [a,b].
Освободившиеся в конце массива элементы
заполнить нулями.

Вариант 6

В одномерном массиве, состоящем из n
вещественных элементов:

1) найти минимальный элемент массива;

2) вычислить сумму элементов массива,
расположенных между первым и последним
положительными элементами;

3) преобразовать массив таким образом,
чтобы сначала располагались все элементы,
равные нулю, а потом все остальные.

Вариант 7

В одномерном массиве, состоящем из n
целых элементов:

1) вычислить номер максимального элемента
массива;

2) вычислить произведение элементов
массива, расположенных между первым и
вторым нулевыми элементами;

3) преобразовать массив таким образом,
чтобы в первой его половине располагались
все элементы, стоявшие в нечетных
позициях, а во второй половине – элементы,
стоявшие в четных позициях.

Вариант 8

В одномерном массиве, состоящем из n
целых элементов:

1) вычислить номер минимального элемента
массива;

2) вычислить сумму элементов массива,
расположенных между первым и вторым
отрицательными элементами;

3) преобразовать массив таким образом,
чтобы сначала располагались все элементы,
модуль которых не превышает 1, а потом
все остальные.

Вариант 9

В одномерном массиве, состоящем из n
целых элементов:

1) вычислить максимальный по модулю
элемент массива;

2) вычислить сумму элементов массива,
расположенных между первым и вторым
положительными элементами;

3) преобразовать массив таким образом,
чтобы элементы, равные 0, располагались
после всех остальных.

Вариант 10

В одномерном массиве, состоящем из n
целых элементов:

1) вычислить минимальный по модулю
элемент массива;

2) вычислить сумму модулей элементов
массива, расположенных после первого
элемента, равного 0;

3) преобразовать массив таким образом,
чтобы в первой его половине располагались
все элементы, стоявшие в четных позициях,
а во второй половине – элементы, стоявшие
в нечетных позициях.

Вариант 11

В одномерном массиве, состоящем из n
вещественных чисел:

1) вычислить номер минимального по модулю
элемента массива;

2) вычислить сумму модулей элементов
массива, расположенных после первого
отрицательного элемента;

3) сжать массив, удалив из него все
элементы, модуль которых находится в
интервале [a,b].
Освободившиеся в конце массива элементы
заполнить нулями.

Вариант 12

В одномерном массиве, состоящем из n
вещественных чисел:

1) вычислить номер максимального по
модулю элемента массива;

2) вычислить сумму модулей элементов
массива, расположенных после первого
положительного элемента;

3) преобразовать массив таким образом,
чтобы сначала располагались все элементы,
целая часть которых находится в интервале
[a,b], а потом
– все остальные.

Вариант 13

В одномерном массиве, состоящем из n
вещественных чисел:

1) вычислить количество элементов
массива, лежащих в диапазоне от А до В;

2) вычислить сумму элементов массива,
расположенных после максимального
элемента;

3) упорядочить элементы массива по
убыванию модулей элементов.

Вариант 14

В одномерном массиве, состоящем из n
вещественных чисел:

1) вычислить количество элементов
массива, равных 0;

2) вычислить сумму элементов массива,
расположенных после минимального
элемента;

3) упорядочить элементы массива по
возрастанию модулей элементов.

Вариант 15

В одномерном массиве, состоящем из n
вещественных чисел:

1) вычислить количество элементов
массива, больших С;

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

3) преобразовать массив таким образом,
чтобы в первой его половине располагались
все отрицательные элементы, а во второй
половине – все положительные элементы
(считать 0 положительным элементом).

Вариант 16

В одномерном массиве, состоящем из n
вещественных чисел:

1) вычислить количество отрицательных
элементов массива;

2) вычислить сумму модулей элементов
массива, расположенных после минимального
по модулю элемента;

3) заменить все отрицательные элементы
массива их квадратами и упорядочить
элементы массива по возрастанию.

Вариант 17

В одномерном массиве, состоящем из n
целых чисел:

1) вычислить количество положительных
элементов массива;

2) вычислить сумму элементов массива,
расположенных после последнего элемента,
равного 0;

3) преобразовать массив таким образом,
чтобы сначала располагались все элементы,
целая часть которых не превышает 1, а
потом – все остальные.

Вариант 18

В одномерном массиве, состоящем из n
вещественных чисел:

1) вычислить количество элементов
массива, меньших С;

2) сумму целых частей элементов массива,
расположенных после последнего
отрицательного элемента;

3) преобразовать массив таким образом,
чтобы сначала располагались все элементы,
отличающиеся от максимального не более
чем на 20%, а потом – все остальные.

Вариант 19

В одномерном массиве, состоящем из n
вещественных чисел:

1) найти произведение отрицательных
элементов массива;

2) найти сумму положительных элементов
массива, расположенных до максимального
элемента;

3) изменить порядок следования элементов
в массиве на обратный.

Вариант 20

В одномерном массиве, состоящем из n
вещественных чисел:

1) вычислить произведение положительных
элементов массива;

2) вычислить сумму положительных элементов
массива, расположенных до минимального
элемента;

3) упорядочить по возрастанию отдельно
элементы, стоящие на четных местах, и
элементы, стоящие на нечетных местах.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Добавить комментарий