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

Посчитать сумму модулей элементов массива, что расположены после первого нулевого элемента - C++

Восстановить пароль Регистрация
 
ShadowThunder
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 23
14.05.2013, 20:40     Посчитать сумму модулей элементов массива, что расположены после первого нулевого элемента #1
Помогите пожалуйста!!! Надо очень срочно, а у самого ничего не получается. Спасибо заранее.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2013, 20:40     Посчитать сумму модулей элементов массива, что расположены после первого нулевого элемента
Посмотрите здесь:

Найти сумму модулей элементов массива, расположенных после первого элемента, равного нулю C++
C++ Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента
Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента C++
Вычислить сумму модулей элементов , расположенных после первого элемента ,равному нулю C++
C++ Найти количество элементов массива, расположенных после первого нулевого элемента
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
14.05.2013, 21:11     Посчитать сумму модулей элементов массива, что расположены после первого нулевого элемента #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
#include <functional>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <numeric>
#include <random>
#include <array>
#include <ctime>
 
int main()
{
    auto randomGeneration = std::bind(std::uniform_int_distribution <> (-10, 10),
                                      std::mt19937 (time(nullptr)));
    const std::size_t arraySize(25);
    std::array <int, arraySize> array;
    std::generate(array.begin(), array.end(), randomGeneration);
    std::cout << "Array: " << std::endl;
    std::copy(array.begin(), array.end(), std::ostream_iterator <int> (std::cout, " "));
 
    unsigned firstZeroPosition(std::distance(array.begin(), std::find(array.begin(), array.end(), 0)));
    std::cout << std::endl << "Sum after " << (firstZeroPosition + 1) << "th element: ";
    std::cout << std::accumulate(array.begin() + firstZeroPosition, array.end(), 0, [] (int tempSum, int currentNumber) -> int {
        return tempSum += abs(currentNumber);
    }) << std::endl;
 
    return 0;
}
ShadowThunder
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 23
14.05.2013, 21:33  [ТС]     Посчитать сумму модулей элементов массива, что расположены после первого нулевого элемента #3
А можно как-то проще для одномерных массивов код написать?
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
14.05.2013, 21:46     Посчитать сумму модулей элементов массива, что расположены после первого нулевого элемента #4
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>
#include <cstdlib>
#include <ctime>
 
int main()
{
    srand(time(0));
    const std::size_t arraySize(10);
    int array[arraySize];
 
    std::cout << "Array: " << std::endl;
    for (unsigned i = 0; i < arraySize; i++)
        std::cout << (array[i] = rand() % 21 - 10) << " ";
    std::cout << std::endl;
 
    int firstZeroPosition(-1);
    for (unsigned i = 0; i < arraySize; i++) {
        if (!array[i]) {
            firstZeroPosition = i;
            break;
        }
    }
 
    if (firstZeroPosition != -1 && firstZeroPosition != arraySize - 1) {
        unsigned resultSum(0);
        for (unsigned i = firstZeroPosition; i < arraySize; i++)
            resultSum += std::abs(array[i]);
        std::cout << "Sum after " << (firstZeroPosition + 1) << "th element: " << resultSum << std::endl;
    } else {
        std::cout << "Error!" << std::endl;
    }
 
    return 0;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.06.2013, 19:15     Посчитать сумму модулей элементов массива, что расположены после первого нулевого элемента #5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
 
int *First(int *a, int *end)
{
   return a < end ? (*a ? First(a + 1, end) : a) : a;
}
 
int Sum(int *a, int *end)
{
   return a < end ? abs(*a) + Sum(a + 1, end) : 0;
}
 
int main()
{
   int a[] = {1, 2, 0, -3, 4, -5, 0}, n;
   n = sizeof(a) / sizeof(*a);
   printf("%d\n", Sum(First(a, a + n) + 1, a + n));
   return 0;
}
Yandex
Объявления
13.06.2013, 19:15     Посчитать сумму модулей элементов массива, что расположены после первого нулевого элемента
Ответ Создать тему
Опции темы

Текущее время: 22:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru