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

Формирование массива по заданному правилу - C++

Восстановить пароль Регистрация
 
Mirai Nikki
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 14
27.09.2012, 01:11     Формирование массива по заданному правилу #1
Дан массив A размера N (одномерный). Сформировать новый массив B того же размера по следующему правилу: элемент BK равен сумме элементов массива A с номерами от K до N
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dimon4ik32
13 / 13 / 1
Регистрация: 16.11.2010
Сообщений: 32
27.09.2012, 02:49     Формирование массива по заданному правилу #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
#include <iostream>
 
using namespace std;
 
int main()
{
    int n;
    cout<<"Input N."<<endl;
    cin>>n;
    float a[n],b[n];
    cout<<"Input array's elements."<<endl;
          for(int i=0;i<n;i++)
              cin>>a[i];
          for(int i=0;i<n;i++)
          {
              b[i]=0;
              for(int j=i;j<n;j++)
                  b[i]+=a[j];
          }
    cout<<"Elements of B are:"<<endl;
          for(int i=0;i<n;i++)
              cout<<b[i]<<" ";
    return 0;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.09.2012, 08:21     Формирование массива по заданному правилу #3
А еще лучше так. Пусть S - сумма всех элементов массива a, тогда
http://www.cyberforum.ru/cgi-bin/latex.cgi?b_i = S - S_{i-1}, i=1,...,N-1,
http://www.cyberforum.ru/cgi-bin/latex.cgi?S_0 = b_0, причем
http://www.cyberforum.ru/cgi-bin/latex.cgi?S_i = S_{i-1} + b_i, i=1,...,N-1.
Получится линейная сложность алгоритма.
Dimon4ik32
13 / 13 / 1
Регистрация: 16.11.2010
Сообщений: 32
27.09.2012, 13:57     Формирование массива по заданному правилу #4
Да, согласен, так лучше. Но можно начать заполнять массив b с конца, тогда для каждого элемента bi=bi+1+ai , где i=n-2, n-3, ..., 0

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#define For(a,b) for(int a=0;a<b;a++)
 
using namespace std;
 
int main()
{
    int n;
    cout<<"Input N."<<endl;
    cin>>n;
    float a[n],b[n];
    cout<<"Input array's elements."<<endl;
          For(i,n)
              cin>>a[i];
          b[n-1]=a[n-1];
          for(int i=n-2;i>=0;i--)
              b[i]=b[i+1]+a[i];
    cout<<"Elements of B are:"<<endl;
          For(i,n)
              cout<<b[i]<<" ";
    return 0;
}
Yandex
Объявления
27.09.2012, 13:57     Формирование массива по заданному правилу
Ответ Создать тему
Опции темы

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