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

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

14.01.2018, 10:50. Показов 10349. Ответов 4

Author24 — интернет-сервис помощи студентам
Ошибка в 3 тесте
Домашнее задание

(Время: 1 сек. Память: 16 Мб Сложность: 27%)
Петя успевает по математике лучше всех в классе, поэтому учитель задал ему сложное домашнее задание, в котором нужно в заданном наборе целых чисел найти сумму всех положительных элементов, затем найти где в заданной последовательности находятся максимальный и минимальный элемент и вычислить произведение чисел, расположенных между ними. Так же известно, что минимальный и максимальный элемент встречаются в заданном множестве чисел только один раз. Поскольку задач такого рода учитель дал Пете около ста, то Петя как сильный программист смог написать программу, которая по заданному набору чисел самостоятельно находит решение. А Вам слабо?

Входные данные

В первой строке входного файла INPUT.TXT записано единственное число N – количество элементов массива. Вторая строка содержит N целых чисел, представляющих заданный массив. Все элементы массива разделены пробелом. Каждое из чисел во входном файле не превышает 10^2 по абсолютной величине.

Выходные данные

В единственную строку выходного файла OUTPUT.TXT нужно вывести два числа, разделенных пробелом: сумму положительных элементов и произведение чисел, расположенных между минимальным и максимальным элементами. Значения суммы и произведения не превышают по модулю 3*10^4.

Примеры

input:
1)5
-7 5 -1 3 9
2)8
3 14 -9 4 -5 1 -12 4

output:
1)17 -15 (5 + 3 + 9 = 17) ( 5 * (-1) * 3 = -15)
2)26 180

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
#include <iostream>
using namespace std;
 
int main()
{
    int n, sum = 0, p = 1;
    cin>>n;
    
    int arr[n];
    
    for (int i = 0; i < n; i++) {
        cin>>arr[i];
    }
    
    for (int i = 0; i < n; i++) {
        if (arr[i] > 0) {
            sum += arr[i];
        }
    }
    
    int max = 0, min = 0, indexOfMax = 0, indexOfMin = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] > max) {
            max = arr[i];
            indexOfMax = i;
        }
    }
    
    for (int i = 0; i < n; i++) {
        if (arr[i] < min) {
                min = arr[i];
                indexOfMin = i;
        }
    }
    indexOfMax++;
    indexOfMin++;
    if (indexOfMax > indexOfMin) {
        for (int i = indexOfMin; i < indexOfMax - 1; i++) {
            if (indexOfMax - indexOfMin != 1) {
                p *= arr[i];
            }
        }
    } else {
        for (int i = indexOfMax; i < indexOfMin - 1; i++) {
            if (indexOfMin - indexOfMax != 1) {
                p *= arr[i];
            }
        }
    }
    
    cout<<sum<<" "<<p;
    
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2018, 10:50
Ответы с готовыми решениями:

Вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами
#include &lt;conio.h&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;RUS&quot;); const int...

Вычислить произведение элементов массива расположенных между максимальным и минимальным элементами
Произведение элементов массива расположенных между максимальным и минимальным элементами. П.5....

Вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; const int N=4; int main() { int mas={1, 2,3,4,};...

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

4
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
14.01.2018, 14:16 2
Ужас парящий на крыльях ночи.
Цитата Сообщение от calcoolator Посмотреть сообщение
А Вам слабо?
Что слабо то собственно?
Один разогреться просит, другой слабо пишет, праздники что ли сказываются?
calcoolator, если Вас пошлют в магазин и попросят купить : коробок спичек, буханку хлеба, пакет муки. вы что, три раза в магазин бегать будете? Я так думаю что за один раз управитесь. Тут то зачем кучу циклов создаете?
В первом цикле найдите сумму всех положительных элементов, а заодно индексы минимального и максимального элементов.
Во втором произведение между минимальным и максимальным.
0
0 / 0 / 1
Регистрация: 29.10.2017
Сообщений: 6
14.01.2018, 14:36  [ТС] 3
Где ошибка в коде ?

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
#include <iostream>
using namespace std;
 
int main()
{
    int n, sum = 0, p = 1;
    cin>>n;
    
    int arr[n];
    
    for (int i = 0; i < n; i++) {
        cin>>arr[i];
    }
    
    int max = 0, min = 0, indexOfMax = 0, indexOfMin = 0;
    
    for (int i = 0; i < n; i++) {
        if (arr[i] > 0) {
            sum += arr[i];
        }
        if (arr[i] > max) {
            max = arr[i];
            indexOfMax = i;
        }
        if (arr[i] < min) {
                min = arr[i];
                indexOfMin = i;
        }
    }
    
    indexOfMax++;
    indexOfMin++;
    if (indexOfMax > indexOfMin) {
        for (int i = indexOfMin; i < indexOfMax - 1; i++) {
            if (indexOfMax - indexOfMin != 1) {
                p *= arr[i];
            }
        }
    } else {
        for (int i = indexOfMax; i < indexOfMin - 1; i++) {
            if (indexOfMin - indexOfMax != 1) {
                p *= arr[i];
            }
        }
    }
    
    cout<<sum<<" "<<p;
    
    return 0;
}
Добавлено через 12 минут
мановар, я просил только подсказать мне мою ошибку.
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
14.01.2018, 16:34 4
Лучший ответ Сообщение было отмечено calcoolator как решение

Решение

Цитата Сообщение от calcoolator Посмотреть сообщение
я просил только подсказать мне мою ошибку.
Тогда опишите в чем состоит эта ошибка. Пока что я вижу только
Цитата Сообщение от calcoolator Посмотреть сообщение
Ошибка в 3 тесте
что мне ни о чем не говорит.

Добавлено через 7 минут
Цитата Сообщение от calcoolator Посмотреть сообщение
int max = 0, min = 0
C++
1
2
int max = arr[0];
int min = arr[0];
Добавлено через 1 час 21 минуту
Быстрее, наверное, так будет.
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    int *arr, n, sum = 0, p = 1;
 
    ifstream fin("input.txt");
 
    fin >> n;
 
    arr = new int[n];
 
    for (int i = 0; i < n; i++) {
        fin >> arr[i];
    }
 
    int indexOfMax = 0, indexOfMin = 0;
 
    for (int i = 0; i < n; i++) {
        if (arr[i] > 0) {
            sum += arr[i];
        }
        if (arr[i] > arr[indexOfMax]){
            indexOfMax = i;
    }
        if (arr[i] < arr[indexOfMin])
            indexOfMin = i;
    }
 
    if (indexOfMax < indexOfMin)
        swap(indexOfMax, indexOfMin);
    
        for (int i = indexOfMin + 1; i < indexOfMax; ++i) 
                p *= arr[i];
        ofstream f("output.txt");
    f << sum << " " << p;
    fin.close();
    f.close();
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 06.07.2020
Сообщений: 6
06.07.2020, 21:01 5
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
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int n, bmaxim,bminim,bb, s = 0, p = 1, posmaxim, posminim;
    cin >> n;
    vector<int> a;
    for(int i = 0; i < n; ++i){
        cin >> bb;
        a.push_back(bb);
    }
    bmaxim = a[0];
    posmaxim = 0;
    bminim = a[0];
    posminim = 0;
    for(int i = 0; i < a.size(); ++i)
        if(a[i] > 0)
            s+=a[i];
    for(int i = 1; i < a.size(); ++i){
        if(bmaxim < a[i]){
            bmaxim = a[i];
            posmaxim = i;
        }
        if(bminim > a[i]){
            bminim = a[i];
            posminim = i;
        }
    }
 
    cout << s << " ";
    if(posminim > posmaxim)
        for(int i = posmaxim + 1; i < posminim; ++i)
            p*=a[i];
    if(posminim < posmaxim)
        for(int i = posminim + 1; i < posmaxim; ++i)
            p*=a[i];
    cout << p;
    return 0;
}
0
06.07.2020, 21:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2020, 21:01
Помогаю со студенческими работами здесь

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

Вычислить произведение элементов массива, расположенных между максимальным и минимальным по модулю элементами
1 задача. Пусть дан одномерный массив A(N). Вычислить произведение элементов массива,...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru