Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
vozhd23
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 31
#1

В одномерном массиве посчитать сумму эллементов после минимального - C++

28.06.2014, 16:17. Просмотров 554. Ответов 16
Метки нет (Все метки)

Помогите срочно решить задачу на экзамене сижу!!!
В одномерном массиве посчитать сумму эллементов после минимального
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2014, 16:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В одномерном массиве посчитать сумму эллементов после минимального (C++):

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

В одномерном массиве посчитать сумму элементов до минимального - C++
Помогите написать программу. В одномерном массиве посчитать сумму элементов до минимального. Заранее спасибо.

В одномерном целочисленном массиве вычислить сумму элементов, расположенных после минимального элемента - C++
Ребят помогите найти ошибку в коде ...Заранее спасибо!!! Тема:ОБРАБОТКА СТАТИЧЕСКИХ МАССИВОВ вот задание: В одномерном...

В одномерном массиве посчитать сумму элементов после последнего положительного элемента - C++
Народ помогите я сижу на экзамене..сделайте простенькую прогу в с++(билдере).В одномерном массиве посчитать сумму элементов после...

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

В одномерном массиве посчитать сумму элементов - C++
В одномерном массиве посчитать сумму элементов , значения которых, соответствуют диапазону, введенного с клавиатуры. Помогите пожалуста

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.06.2014, 16:24 #2
vozhd23,
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
#include<vector>
#include<algorithm>
#include<iterator>
#include<numeric>
int main()
{
    std::vector <int> ivec = {1,4,-3,5,6,7,8};
    std::copy(ivec.begin(),ivec.end(),std::ostream_iterator<int> (std::cout," "));
    std::cout<<"\nsum: "<<std::accumulate(std::min_element(ivec.begin(),ivec.end())+1,ivec.end(),0);
    return 0;
}
vozhd23
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 31
28.06.2014, 16:41  [ТС] #3
std::vector <int> ivec = {1,4,-3,5,6,7,8}; в этой строке выдаёт ошибку
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 666
28.06.2014, 17:05 #4
vozhd23, Вот так попробуйте. На самом деле можно не сортировать, но мне что то захотелось
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
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int a[1000];
 
int main()
{
    int n, i;
    int s = 0;
    srand(time(0));
 
    cin >> n;
 
    for(i = 0;i < n;i++){
        a[i] = rand() % 10;
        cout << a[i] << " ";
    }
    cout << endl;
 
    sort(a,a+n);
 
    for(i = 0;i < n;i++){
        if(a[i] > a[0])
        s += a[i];
    }
 
    cout << s << endl;
 
    system("pause");
 
    return 0;
}
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.06.2014, 17:15 #5
Sh@dow777, после сортировки минимальный элемент станет первым, значит сумма будет тупо цикл по всем элементам кроме первого, а это не правильно, имхо
с таким же успехом можно было просуммировать весь массив начальный и вычесть минимальный элемент, что не соотвецтвует условию задачи

Добавлено через 3 минуты
Цитата Сообщение от vozhd23 Посмотреть сообщение
std::vector <int> ivec = {1,4,-3,5,6,7,8}; в этой строке выдаёт ошибку
нет поддержки с++ 11
замени на
C++
1
2
3
4
    const size_t size  = 5;
    std::vector <int> ivec(size);
    for(std::vector<int>::iterator it=ivec.begin();it!=ivec.end();++it)
        std::cin>>*it;
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 666
28.06.2014, 17:16 #6
cooller, А что, если отсортированный массив выглядит так - 1 1 1 2 3? Я проверил. Вывело 5, как и надо.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.06.2014, 17:20 #7
Sh@dow777, к примеру, имеется массив: 1 2 3 4 - 1 5 6 7 8
результатом должно быть : 5 + 6 + 7 + 8 = 26, а в вашем случае будем массив: -1 1 2 3 4 5 6 7 8, и сумма будет считаться начиная со второго элемента
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.06.2014, 17:22 #8
ответом должно быть 5, так как минимальный = 0
Миниатюры
В одномерном массиве посчитать сумму эллементов после минимального  
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 666
28.06.2014, 17:33 #9
cooller, Внимательно задание прочтите. В одномерном массиве посчитать сумму эллементов после минимального.
Цитата Сообщение от cooller Посмотреть сообщение
-1 1 2 3 4 5 6 7 8
Минимальный - -1. Потом идет сумма 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36 Что вас не устраивает?
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.06.2014, 17:38 #10
Sh@dow777, да сортировать не нужно! изменяется первоначальный массив и теряется смысл задания
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 666
28.06.2014, 17:41 #11
cooller, Но задание же я выполнил. Выводит то, что нужно ТС.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.06.2014, 17:43 #12
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Но задание же я выполнил. Выводит то, что нужно ТС.
нет, ты не выполнил задание
точней выполнил, но не верно
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 666
28.06.2014, 17:57 #13
Он сортируется. Элементы же не изменяются. Я считаю, что мой вариант тоже верный.

Добавлено через 1 минуту
cooller, Хорошо, я сейчас переделаю и покажу, что выводить будет то же самое.

Добавлено через 10 минут
cooller, Вот, я переделал. Выводит то, что и выводило.
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
#include <iostream>
using namespace std;
 
int a[1000];
 
int main()
{
    int n, i;
    int s = 0;
 
    cin >> n;
 
    for(i = 0;i < n;i++)
        cin >> a[i];
 
    cout << endl;
 
    int min = a[0];
 
    for(i = 0;i < n;i++){
        if(a[i] < min)
            min = a[i];
    }
    for(i = 0;i < n;i++){
        if(a[i] > min)
        s += a[i];
    }
 
    cout << s << endl;
 
    system("pause");
 
    return 0;
}
Croessmah
Модератор
Эксперт CЭксперт С++
13139 / 7402 / 829
Регистрация: 27.09.2012
Сообщений: 18,242
Записей в блоге: 3
Завершенные тесты: 1
28.06.2014, 18:03 #14
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Он сортируется. Элементы же не изменяются. Я считаю, что мой вариант тоже верный.
рассмотрим последовательность 5 -8 2 4
минимальный элемент здесь это -8, считаем сумму элементов после него, получаем 2+4 = 6
теперь посмотрим как работает Ваш алгоритм с этой последовательностью. Сначала она сортируется, то есть получаем
-8 2 4 5
далее в цикле проходим по всем элементам и сравниваем с нулевым, если больше, то прибавляем к общей сумме, поэтому получаем 2+4+5 = 11

разница видна?

Добавлено через 2 минуты
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Выводит то, что и выводило.
Потому что Вы сравниваете(не понятно зачем) с минимальным все элементы и суммируете их, а необходимо суммировать только те, которые идут после него.
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 666
28.06.2014, 18:13 #15
Цитата Сообщение от Croessmah Посмотреть сообщение
рассмотрим последовательность 5 -8 2 4
минимальный элемент здесь это -8, считаем сумму элементов после него, получаем 2+4 = 6
Да почему вы 5 не считаете? он же тоже после минимального стоит.

Добавлено через 1 минуту
Аааа, все, до меня дошло. Простите, я тугодум
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2014, 18:13
Привет! Вот еще темы с ответами:

В одномерном массиве надо посчитать сумму элементов - C++
Вводим целые числа и надо посчитать их сумму.

В одномерном массиве посчитать сумму элементов до максимального. - C++
Доброе утро. В одномерном массиве посчитать сумму элементов до максимального. Для обработки использовать динамическую память. Функции...

Как посчитать сумму и разность чисел в одномерном массиве? - C++
Как написать функцию??обьясните плз

В одномерном массиве, состоящем из вещественных элементов вычислить номер минимального элемента в массиве, сумму элементов массива - C++
В одномерном массиве, состоящем из 10 вещественных элементов вычислить: 1. Номер минимального элемента в массиве 2. Сумму...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.06.2014, 18:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru