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

Как реализовать каскадную схему суммирования?

30.06.2013, 17:13. Показов 6421. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется массив, скажем, из 10 элементов. Нужно просуммировать элементы массива по каскадной схеме (складываются два первых элемента, потом ещё два... затем складывается сумма попарных элементов и т.д.). Как я понял, тут цикл в цикле должен быть. Но не могу сообразить.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.06.2013, 17:13
Ответы с готовыми решениями:

Не могу понять как написать каскадную рекурсию
Для заданного одномерного массива A из N элементов найти значение минимального элемента массива и...

Реализовать в цикле формулу со знаком суммирования
Здравствуйте! Не могу реализовать формулу, где стоит знак суммирования, при помощи цикла. У меня...

Реализовать программу суммирования элементов массива по условию
Необходимо написать программу которая будет суммировать значения одномерного массива в пределах от...

Как реализовать схему в EWB?
Всем доброго времени суток. Нужна помощь по Electric WorkBench (или посоветуйте другую...

9
36 / 36 / 2
Регистрация: 28.04.2013
Сообщений: 110
30.06.2013, 22:47 2
ммм.... как я понял, если Вам необходимо вывести результат суммы, то можно просто просуммировать все элементы безо всяких каскадов =) сумма двух вещественных чисел обладает свойством коммутативности =)

а если Вам всё-таки надо вывести сумму каждого каскада, то можно сделать рекурсивно.
0
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 5
01.07.2013, 10:22  [ТС] 3
Цитата Сообщение от el_gato_de_Ch Посмотреть сообщение
ммм.... как я понял, если Вам необходимо вывести результат суммы, то можно просто просуммировать все элементы безо всяких каскадов =) сумма двух вещественных чисел обладает свойством коммутативности =)

а если Вам всё-таки надо вывести сумму каждого каскада, то можно сделать рекурсивно.
Да, на выходе нужна сумма элементов. Но в том и вся загвоздка, что суммировать нужно не последовательно, а именно каскадно. Понять бы ещё, как осуществить эту рекурсию на программном уровне)) на пальцах вроде всё понятно
0
36 / 36 / 2
Регистрация: 28.04.2013
Сообщений: 110
01.07.2013, 10:32 4
как пример можете посмотреть реализацию алгоритма quick sort, благо реализаций очень много, на любой вкус, прежде чем искать реализацию сперва ознакомьтесь с quick sort

немного подшаманив процедурку можно каскадную сумму сделать.
0
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 5
01.07.2013, 11:00  [ТС] 5
el_gato_de_Ch, благодарю. Может как-нибудь поможет.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
01.07.2013, 12:29 6
не совсем понял задание как конкретно требуется вычислить сумму. но одним из способов обработки данных, деля их предварительно на части, является метод "разделяй и властвуй". вот так выглядит ваша сумма с помощью данного метода

C++
1
2
3
4
int Sum(int *a, int l, int r)
{
   return l == r ? *a : Sum(a, l, (l+r)/2) + Sum(a, (l+r)/2 + 1, r);
}
0
Заблокирован
Автор FAQ
01.07.2013, 13:03 7
AntiTerror, задачка мне понравилась, даже заставила меня немного напрячь серое вещество. Держи
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
#include <iostream>
using namespace std;
 
//0 + 1 + 2 +...+ 8 + 9 == 45
//https://www.cyberforum.ru/cpp-beginners/thread915175.html
 
int main()
{
    int s     = 0;
    int arr[] = {0,1,2,3,4,5,6,7,8,9};
    int i, n  = sizeof(arr)/sizeof(arr[0]);
    for(i  = 0; i < n / 2; i++)
    {
        s += (arr[2*i] += arr[2*i + 1]);
        if( i + 1 == n / 2)
        {
            //сдвиг элементов с чётных позиций в первые
            //т.е имеем
            //1 1 5 3 9 5 13 7 17
            //и делаем
            //1 5 9 13 17
            for(i = 1; i < n / 2; i++)
                arr[i] = arr[2*i];
            n = n / 2;
            if( n > 2)
            {
                s = 0;
                //на первой итерации получаем
                //1,5,9,13,17
                if( n % 2)//17 - уже нечётный
                    s = arr[i - 1];//запомним его
                i = -1; 
            }
        }
    }
    cout<<"s = "<<s<<endl;
    return 0;
}
Миниатюры
Как реализовать каскадную схему суммирования?  
1
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 5
02.07.2013, 17:43  [ТС] 8
-=ЮрА=-, отлично! То, что нужно, спасибо
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.07.2013, 19:24 9
введение шага позволяет не использовать сдвиги.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    int a[] = {0,1,2,3,4,5,6,7,8,9};
    int i, step, n  = sizeof(a) / sizeof(*a);
    for(step = 1; step < n; step *= 2)
       for(i = step; i < n; i += 2*step)
              a[i - step] += a[i];
    cout << "s = " << a[0] << endl;
    return 0;
}
1
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 5
03.07.2013, 08:54  [ТС] 10
Thinker, тоже интересный вариант))
0
03.07.2013, 08:54
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2013, 08:54
Помогаю со студенческими работами здесь

Подскажите, как реализовать схему

Как реализовать такую схему выборки данных
Есть выпадающий список $cat = dbquery(&quot;SELECT * FROM название_таблицы&quot;); $cat2 = dbquery(&quot;SELECT...

Как реализовать блок-схему на с++ с помощью while или do-while
как реализовать такую блок-схему на с++? с помощью while или do-while?

Как реализовать схему с WI-FI интернетом.Общажный провайдер
Всем добрый вечер. Я живу в общежитии от универа.И в нашем общежитии нету нормального интернета...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на 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 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru