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

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

Войти
Регистрация
Восстановить пароль
 
Mirai Nikki
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 14
#1

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

27.09.2012, 01:11. Просмотров 407. Ответов 3
Метки нет (Все метки)

Дан массив A размера N (одномерный). Сформировать новый массив B того же размера по следующему правилу: элемент BK равен сумме элементов массива A с номерами от K до N
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2012, 01:11     Формирование массива по заданному правилу
Посмотрите здесь:

Преобразовать массив по заданному правилу C++
Модифицировать элементы массива по заданному правилу C++
C++ Вывод массива согласно заданному правилу.
C++ Получить массив по заданному правилу
Определить значение целочисленного массива по заданному правилу C++
C++ Сформировать целочисленный массив по заданному правилу
Сформировать массив по заданному правилу C++
C++ Сформировать вектор по заданному правилу
Сформировать последовательность по заданному правилу C++
C++ Из массива сформировать матрицу по заданному правилу
C++ Из массива сформировать матрицу по заданному правилу
Сформировать матрицу по заданному правилу C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
4218 / 2192 / 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     Формирование массива по заданному правилу
Ответ Создать тему
Опции темы

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