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

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

12.07.2017, 16:23. Показов 13819. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. нужна хелпа для понимания
у меня при минимальном значении всегда выдает 0 и как-то странно суммирует. помогите ребята плз.

Определите сумму элементов массива, расположенных между минимальным и максимальным значениями. (Сами максимальное и минимальное значения в суммировании не участвуют.)



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
44
/* package whatever; // don't place package name! */
 
import java.util.*;
import java.lang.*;
import java.io.*;
 
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int z=0;
        int size = 4;
        int a [] = new int[size];
        int max = a[0];
        int min = a[0];
        for (int i=0;i<a.length;i++){
                a[i]=(int)(Math.random()*10);
        }
        for (int i=0;i<a.length;i++){
                System.out.print(a[i] + " ");
        }
        System.out.println("");
        for (int i=0;i<a.length;i++){
                if (a[i]>max){
                        max=a[i];   
                }
                if (a[i]<min){
                        min=a[i];
                }
        }
        System.out.println(min + " " + max);
 
        if(min < max){
            for(int i = min + 1; i < max; i++)
            z += a[i];
        }
        else if(min > max){
            for(int i = max + 1; i < min; i++)
            z += a[i];
        }
        System.out.println(z);// your code goes here
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.07.2017, 16:23
Ответы с готовыми решениями:

Вычислить сумму элементов расположенных между максимальным и минимальным значениями массива
на С# Дан массив целых чисел a1,...,an. Найти минимальный и максимальный элементы массива и вычислить сумму элементов, расположенных между...

Найти сумму элементов массива, расположенных между максимальным и минимальным значениями включительно
У нас начались массивы, и у меня начались с ними проблемы, помогите, пожалуйста!:cry: Элементы массивов могут быть заданы заранее или...

Найти сумму членов массива, расположенных между максимальным и минимальным значениями
Используя датчик случайных чисел, заполнить массив вещественными значениями, лежащими в диапазоне -12 до 49. А) Найти сумму ее членов,...

15
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
12.07.2017, 21:57
Немного доделал ваш вариант и получилось такое.
Кликните здесь для просмотра всего текста
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
public class Ra {
    public static void main(String[] args) {
        int z=0;
        int size = 15;
        int a [] = new int[size];
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;
        int indexMin = 0;
        int indexMax = 0;
        for (int i=0;i<a.length;i++){
            a[i]= (int) ((Math.random() * 110) - 50 );
        }
        for (int i=0;i<a.length;i++){
            System.out.print(a[i] + " ");
        }
        System.out.println("");
        for (int i=0;i<a.length;i++){
            if (a[i]>max){
                max=a[i];
                indexMax = i;
            }
            if (a[i]<min){
                min=a[i];
                indexMin = i;
            }
        }
        System.out.println(min + " " + max);
 
        if(min < max){
            for(int i = indexMin + 1; i < indexMax; i++)
                z += a[i];
        }
        else if(min > max){
            for(int i = indexMax + 1; i < indexMin; i++)
                z += a[i];
        }
        System.out.println(z);// your code goes here
    }
}

Основные ошибки. Ну по первой маленький размер - часто мин и мах рядом будут. Мин и мах у вас изначально инициализируються нулями, но в цикле когда заполняете массив у вас только положительные числа. Далее вы ищете макс и мин в принципе правильно, но вам нужно ищё и индекс запомнить де они то находятся. И когда вы слаживали у вас могло получиться что к примеру макс 10 а массив то размером в 4.
1
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 3
12.07.2017, 22:09  [ТС]
Спасибо сейчас почитаю повникаю (только учусь яве)
только вот бывают варианты когда сумма не идет
массив 32 53 98 70 22 68 44 10 100 95 73 107 15 5 17
мин макс 5 107
сумма между ними 0
а иногда выдает правильно
17 72 90 94 93 82 30 30 105 109 70 62 20 106 99
17 109
596
С чем это может быть связанно?
0
 Аватар для Borsche
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
12.07.2017, 22:29
Моя ошибка. Исправьте эту часть кода
Java
1
2
3
4
5
6
7
        if(indexMin < indexMax){
            for(int i = indexMin + 1; i < indexMax; i++)
                z += a[i];
        } else{
            for(int i = indexMax + 1; i < indexMin; i++)
                z += a[i];
        }
И странно что у вас только положительные числа)
2
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 3
12.07.2017, 22:40  [ТС]
я убрал (-50) из рандома) мне надо суть уловить) Спасибо большое за помощь) а то в нете рыл и не мог найти ответов) а самому пока не по силам сделать(2ой день учу))
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 6
04.04.2019, 22:57
а если в массиве будет два промежутка макс и мин элементов,такого типа программа считает сумму только первой пары лимитов
не могу понять что нужно сделать чтобы дальше еще считал
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
04.04.2019, 23:14
skiripo, поясни на примере, что ты имеешь ввиду?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
04.04.2019, 23:38
ArtemFM, 5, 5, 5, 0, 5, 5, 5, 100, 5, 5, 5, 0, 5, 5, 5, 100, 5, 5, 5...
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
04.04.2019, 23:43
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
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
import java.util.Arrays;
 
public class Task046 {
    private static final int N = 10;
    private static final int MIN = 1;
    private static final int MAX = 5;
 
    public static void main(String[] args) {
        int[] array = createArray(N, MIN, MAX);
        System.out.println("Array: " + Arrays.toString(array));
        int min = getMin(array);
        int[] indexesMin = getIndexesNumberToArray(array, min);
        System.out.printf("Min number to array = %d; his indexes equal: %s;\n", min, Arrays.toString(indexesMin));
 
        int max = getMax(array);
        int[] indexesMax = getIndexesNumberToArray(array, max);
        System.out.printf("Max number to array = %d; his indexes equal: %s;\n", max, Arrays.toString(indexesMax));
 
        sumsAllRangeBetweenMinAndMax(array, indexesMin, indexesMax);
    }
 
    private static int[] getIndexesNumberToArray(int[] array, int number) {
        int[] indexes = new int[0];
        if (array != null && array.length > 0) {
            indexes = new int[array.length];
            int count = 0;
            for (int index = 0; index < array.length; index++) {
                if (array[index] == number) {
                    indexes[count++] = index;
                }
            }
            indexes = Arrays.copyOf(indexes, count);
        }
        return indexes;
    }
 
    private static int[] createArray(int size, int min, int max) {
        int[] array = new int[size > 0 ? size : 0];
        for (int index = 0; index < array.length; index++) {
            array[index] = (int) (Math.random() * (max - min + 1) + min);
        }
        return array;
    }
 
    private static int getMin(int[] array) {
        int result = 0;
        if (array != null && array.length > 0) {
            int min = array[0];
            for (int number : array) {
                if (min > number) {
                    min = number;
                }
            }
            result = min;
        }
        return result;
    }
 
    private static int getMax(int[] array) {
        int result = 0;
        if (array != null && array.length > 0) {
            int max = array[0];
            for (int number : array) {
                if (max < number) {
                    max = number;
                }
            }
            result = max;
        }
        return result;
    }
 
    private static void sumsAllRangeBetweenMinAndMax(int[] array, int[] indexesMin, int[] indexesMax) {
        if (array != null && indexesMin != null && indexesMax != null) {
            for (int min : indexesMin) {
                for (int max : indexesMax) {
                    int start = Math.min(min, max);
                    int end = Math.max(min, max);
                    int sum = 0;
                    for (int index = start; index <= end; index++) {
                        System.out.print(array[index] + " ");
                        sum += array[index];
                        if (index != end) {
                            System.out.print("+ ");
                        }
                    }
                    System.out.println("= " + sum + ";");
                }
            }
        }
    }
}
Добавлено через 20 секунд
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
Array: [1, 4, 3, 1, 2, 1, 5, 3, 5, 1]
Min number to array = 1; his indexes equal: [0, 3, 5, 9];
Max number to array = 5; his indexes equal: [6, 8];
1 + 4 + 3 + 1 + 2 + 1 + 5 = 17;
1 + 4 + 3 + 1 + 2 + 1 + 5 + 3 + 5 = 25;
1 + 2 + 1 + 5 = 9;
1 + 2 + 1 + 5 + 3 + 5 = 17;
1 + 5 = 6;
1 + 5 + 3 + 5 = 14;
5 + 3 + 5 + 1 = 14;
5 + 1 = 6;
 
Process finished with exit code 0
1
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 6
07.04.2019, 13:49
я имел ввиду немного не так, допустим {2,0,3,2,9,5,5,6,9,1,2,0} = 3+2+1+2=8без индекса возможно? именно искать промежутки с макс и мин значениями
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
07.04.2019, 13:58
skiripo, не понял, от слова "совсем".
в твоём примере мин - это 0, а макс - это 9

Добавлено через 42 секунды
ааа, понял тебя. Вопрос остаётся:"Накой именно так?"
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 6
07.04.2019, 23:23
ну да 0-мин 9-макс
такое условие чтоб считало во все стороны...
и мин макс значения не входят
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
08.04.2019, 00:47
в 77 и 78 строке поменяй вот это:
Java
1
2
int start = Math.min(min, max);
                    int end = Math.max(min, max);
на это:

Java
1
2
int start = Math.min(min, max) + 1;
                    int end = Math.max(min, max) - 1;
Добавлено через 1 минуту
и хватит по пустякам, которые Вы могли исправить и сами, по крайней мере должны хоть примитивные вещи знать, коли предмет этот сдаёте, отвлекать. Не наглейте
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 6
08.04.2019, 00:56
Array: [6, 2, 5, 0, 7, 9, 9, 6]
Min number to array = 0; his indexes equal: [3];
Max number to array = 9; his indexes equal: [5, 6];
7 = 7;
7 + 9 = 16;
поменял как ты говорил,но всеравно считает 9ку
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
08.04.2019, 01:45
0, 7, 9, 9 => min = 0, max = 9 => 7 + 9 = 16

Добавлено через 2 минуты
Array: [6, 2, 5, 0, 7, 9, 9, 6]
Min number to array = 0; his indexes equal: [3];
Max number to array = 9; his indexes equal: [5, 6];

[6, 2, 5, 0, 7, 9, 9, 6] => 7
[6, 2, 5, 0, 7, 9, 9, 6] => 7 + 9
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 6
08.04.2019, 11:41
спасиб,запутался уже сам)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.04.2019, 11:41
Помогаю со студенческими работами здесь

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

Массив: Найти сумму членов массива, расположенных между его максимальным и минимальным значениями...
Сгенерировать массив и N РАЗЛИЧНЫХ случайных чисел. Найти сумму ее членов расположенных между максимальным и минимальным значениями (в...

Найти сумму элементов массива, находящихся между максимальным и минимальным значениями
Найти сумму элементов массива А (45), находящихся между максимальным и минимальным значениями. Код С.

Найти сумму элементов массива А (45), находящихся между максимальным и минимальным значениями.
Найти сумму элементов массива А (45), находящихся между максимальным и минимальным значениями. Элементы массива задать рандомно. ...

Найти сумму членов, расположенных между максимальным и минимальным значениями
2. Дано натуральное число n (0&lt;=n&lt;=9999). Верно ли, что это число содержит ровно три одинаковые цифры, как, например, числа 6676, 5355,0002...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru