С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 16.09.2017
Сообщений: 53
1

Подсчитать сумму элементов массива где они возрастают и сумму элементов где они убывают.Вычислить разность сумм

09.11.2017, 16:16. Показов 3709. Ответов 11
Метки нет (Все метки)

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

Одномерный массив. Вычислить разность C= A-B, где А-произведение положительных элементов, а В- сумма элементов по абсолютному значению массива
Вычислить разность C= A-B, где А-произведение положительных элементов, а В- сумма элементов по...

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

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

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

11
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
09.11.2017, 18:33 2
{1, 2, 3, 2, 0, 10, 8} - какой должен быть результат?
{1, 1, 1, 1, 1, 1, 1} - какой должен быть результат?
0
230 / 199 / 71
Регистрация: 21.10.2016
Сообщений: 448
09.11.2017, 19:29 3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Dif {
 
    public static void main(String[] args) {
        int inc = 0;    // сумма возрастающих значений
        int dec = 0;    // сумма убывающих значений
        int[] arr = {1, 2, 3, 2, 0, 10, 8};
 
        int delta;    // разница между соседними значениями
        for (int i = 0; i < (arr.length-1); i++) {
            delta = arr[i+1] - arr[i];
            if (delta < 0) {
                dec += delta;
            }
            else {
                inc += delta;
            }
        }
 
        int result = Math.abs(inc + dec);
        System.out.println(result);
    }
}
Bash
1
2
3
const@mate ~/progs $ javac Dif.java
const@mate ~/progs $ java Dif
7
0
1 / 1 / 0
Регистрация: 16.09.2017
Сообщений: 53
09.11.2017, 19:33  [ТС] 4
В первом случае -7
сумма участков где они возрастают 16 ,а где убывают 23
16-23=-7
Во втором случае получается 0 нету разности
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
09.11.2017, 19:42 5
Цитата Сообщение от Хм Посмотреть сообщение
dec += delta;
inc += delta;
Это не сумма значений, а сумма разниц между соседними значениями.
Цитата Сообщение от Хм Посмотреть сообщение
nt result = Math.abs(inc + dec);
Про модуль суммы вообще речи не было.

Цитата Сообщение от Dobriy_Bobr Посмотреть сообщение
где они возрастают 16 ,а где убывают 23
То есть в примере 3 и 10 входят в обе суммы?
1
1 / 1 / 0
Регистрация: 16.09.2017
Сообщений: 53
09.11.2017, 19:47  [ТС] 6
1-ое возрастание 1 2 3 (все идут в 1 сумму)1+2+3=6
2-ое возрастание 0 10 (в 1 сумму)10+0+6=16(1 сумма)

1-ое убывание 3 2 0 (во 2 сумму) 3+2+0=5
2-ое убывание 10 8(во 2 сумму)10+8+5=23(2-ая сумма)

16-23 = -7
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
09.11.2017, 20:02 7
Java
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
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 2, 0, 10, 8};
 
        int inc = 0;
        int dec = 0;
        boolean flag = true;
 
        for (int i = 1; i < arr.length; i++) {
            if (arr[i - 1] < arr[i]) {
                if (flag) {
                    inc += arr[i - 1];
                    flag = false;
                }
                inc += arr[i];
            } else if (arr[i - 1] > arr[i]) {
                if (!flag) {
                    dec += arr[i - 1];
                    flag = true;
                }
                dec += arr[i];
            }
 
        }
 
        System.out.println(inc + " - " + dec + " = " + (inc - dec));
 
    }
Добавлено через 1 минуту
Хм, запустите Вашу программу для любого массива, у которого совпадают первый и последний элемент
1
0 / 0 / 0
Регистрация: 05.11.2017
Сообщений: 6
09.11.2017, 20:56 8
Java
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
    
        int[] a = {8, 3, 1}; //Первый массив
    int[] b = {1, 50, 55}; //Второй массив
    int as = 0; //Сумма "a"
    int bs = 0; //Сумма "b"
    int r = 0;  //Разность
    if (a[0] < a[a.length - 1]) { //Если первый массив идёт по возрастанию
        for(int i = 0; i < a.length; i++)  { //Складываем первый массив
            as = as + a[i];
        }
        for(int i = 0; i < b.length; i++)  { //Складываем второй массив
            bs = bs + b[i];
        }
        r = as - bs;
    }
        if (a[0] > a[a.length - 1]) { //Если второй массив идёт по возрастанию
            for(int i = 0; i < a.length; i++)  { //Складываем первый массив
                as = as + a[i];
            }
            for(int i = 0; i < b.length; i++)  { //Складываем второй массив
                bs = bs + b[i];
            }
            r = bs - as;
        }
    System.out.println(r);
Если правильно понял вопрос)
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
09.11.2017, 23:49 9
Senatorrr,
Цитата Сообщение от Dobriy_Bobr Посмотреть сообщение
Задан случайный массив
массив случайный
массив один, а не два.
0
501 / 347 / 134
Регистрация: 14.06.2016
Сообщений: 666
10.11.2017, 02:40 10
JIeIIIa, int[] arr = {5, 0, 5}; ???
1
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
10.11.2017, 23:02 11
Добавить условие надо.
Java
1
2
3
4
boolean flag = true;
        if (arr.length > 1) {
            flag = arr[0] < arr[1];
        }
1
Эксперт функциональных языков программированияЭксперт Java
4544 / 2738 / 486
Регистрация: 28.04.2012
Сообщений: 8,648
11.11.2017, 01:31 12
JIeIIIa, неочевидный код =)

Java
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
final class SumSequences {
 
    static int diffSequenceSums(int[] xs) {
        final int[] sums = sumSequences(xs);
        if (sums == null) {
            return 0;
        }
        return sums[Direction.INCREASING.ordinal()] - sums[Direction.DECREASING.ordinal()];
    }
 
    private static int[] sumSequences(int[] xs) {
        if (xs == null || xs.length < 2) {
            return null;
        }
        int[] sums = new int[Direction.values().length];
        Direction direction = Direction.NONE;
        int previous = xs[0];
        for (int i = 1; i < xs.length; i++) {
            final int current = xs[i];
            sums[direction.ordinal()] += previous;
            direction = direction(previous, current);
            sums[direction.ordinal()] += previous;
            previous = current;
        }
        sums[direction.ordinal()] += xs[xs.length - 1];
        return sums;
    }
 
    private static Direction direction(int current, int next) {
        if (current == next) {
            return Direction.NONE;
        }
        if (current < next) {
            return Direction.INCREASING;
        }
        return Direction.DECREASING;
    }
 
    private enum Direction {
 
        NONE, INCREASING, DECREASING
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.junit.Assert;
import org.junit.Test;
 
public final class SumSequencesTest {
 
    @Test
    public void test() {
        Assert.assertEquals(SumSequences.diffSequenceSums(null), 0);
        Assert.assertEquals(SumSequences.diffSequenceSums(new int[]{1}), 0);
        Assert.assertEquals(SumSequences.diffSequenceSums(new int[]{1, 2}), 3);
        Assert.assertEquals(SumSequences.diffSequenceSums(new int[]{2, 1}), -3);
        Assert.assertEquals(SumSequences.diffSequenceSums(new int[]{1, 1}), 0);
        Assert.assertEquals(SumSequences.diffSequenceSums(new int[]{1, 2, 3, 2, 0, 10, 8}), -7);
        Assert.assertEquals(SumSequences.diffSequenceSums(new int[]{1, 1, 1, 1, 1, 1, 1}), 0);
        Assert.assertEquals(SumSequences.diffSequenceSums(new int[]{5, 0, 5}), 0);
    }
}
1
11.11.2017, 01:31
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2017, 01:31
Помогаю со студенческими работами здесь

Вычислить сумму индексов положительных элементов массива С(9) которые формируются по правилу: C(i)=Sin(C(i-1) + 2) где С(1)=13
Составить блок-схему. Буду признательно.

Массив: Вычислить сумму элементов главной диагонали и сумму элементов первого столбца, найти их разность
помогите пожалуйста. Задать с клавиатуры матрицу размером 4*4. Вычислить сумму элементов главной...

Найти сумму четных элементов векторов а и с. Если они равны, то в каждом векторе поменять порядок элементов.
Нужно решить задачу. (пользовательская функция). Найти сумму четных элементов векторов а и с....

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru