Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
tron737
8 / 8 / 4
Регистрация: 29.12.2013
Сообщений: 27
#1

Из каждого элемента массива, начиная со второго, вычесть все остальные элементы - C++

12.07.2014, 20:40. Просмотров 962. Ответов 20
Метки нет (Все метки)

Дан массив, из каждого элемента, начиная со второго, нужно вычесть все остальные элементы.
вот пример:
1 2 3 4 5
(2 - 3 - 4 - 5 - 1), (3 - 4 - 5 - 1 -2), (4 - 5 - 1- 2 - 3), (5 -1 -2 -3 -4)
в результате получим:
-11 -9 -7 -5

думаю, моя задумка понятна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2014, 20:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Из каждого элемента массива, начиная со второго, вычесть все остальные элементы (C++):

Увеличить все элементы этого массива начиная с первого положительного элемента в два раза. - C++
Помогите решить в Borland c++ Если можно еще блок-схему Задан массив целых чисел. Увеличить все элементы этого массива начиная с...

все элементы побочной диагонали квадратного массива,начиная с элемента,расположенного в правом верхнем углу. - C++
Вывести на экран (в одну строку): а)все элементы побочной диагонали квадратного массива,начиная с элемента,расположенного в правом...

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

В массиве вычислить среднее арифметическое и вычесть его из каждого элемента массива. - C++
Файлы. Работа с одномерными массивами Постановка задачи 1 Прочитать из файла два одномерных массива разной длины. Для каждого из них...

Вставить два элемента по 1000, начиная с четвертого элемента исходного массива, сдвигая его элементы - C++
Помогите с созданием программы, которая выполняет следующие действия: a) одномерный массив из 10 элементов целого типа в диапазоне ; b)...

Все отрицательные элементы массива перенести в начало, а все остальные - в конец - C++
помогите пожалуйста))) преобразовать массив по следующему правилу (воспользовавшись массивом у как вспомогательным):все отрицательные...

20
olper
24 / 24 / 11
Регистрация: 02.12.2013
Сообщений: 75
12.07.2014, 21:16 #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
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
    int inarray[] = {1,2,3,4,5};
    std::vector<int> invec (inarray, inarray + sizeof(inarray) / sizeof(int) );
    std::vector<int> result;
 
    std::vector<int>::iterator it,it2;
    for (it = invec.begin()+1;it!=invec.end();++it)
    {
        it2 = invec.begin();
        int s=0;
        for (it2=invec.begin();it2!=invec.end();++it2)
        {
            if (it2==it) continue;          
            s+=*it2;
        }
        result.push_back(*it-s);        
    }   
    std::copy(result.begin(), result.end(), std::ostream_iterator<int>(std::cout, "\t"));
    std::cout<<std::endl<<"any key:>";
    std::cin.ignore();
    return 0;
}
0
gru74ik
Эксперт CЭксперт С++
4207 / 1853 / 198
Регистрация: 20.02.2013
Сообщений: 4,992
Записей в блоге: 22
12.07.2014, 21:21 #3
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
39
40
41
42
43
44
45
46
47
48
49
50
51
/// [url]http://www.cyberforum.ru/cpp-beginners/thread1226526.html[/url]
/*
Дан массив, из каждого элемента, начиная со второго,
нужно вычесть все остальные элементы.
вот пример:
1 2 3 4 5
(2 - 3 - 4 - 5 - 1), (3 - 4 - 5 - 1 -2),
(4 - 5 - 1- 2 - 3), (5 -1 -2 -3 -4)
в результате получим:
-11 -9 -7 -5
*/
 
// Подключаем заголовочные файлы:
#include <iostream>     // для ввода-вывода
#include <windows.h>    // для отображения русского языка
 
using namespace std;    // подключаем стандартное пространство имён
 
int main()  // функция main согласно стандарту C++ должна быть типа int
{
    SetConsoleCP(1251);       // для отображения в консоли русского языка
    SetConsoleOutputCP(1251); // для отображения в консоли русского языка
 
    const int sizeArr = 5;  // размер массива
 
    int arr[sizeArr]={1, 2, 3, 4, 5}; // инициализация элементов массива значениями
 
    int sum=0;    // переменная, в которую мы сложим сумму
                  // значений всех элементов массива
 
    // Суммируем значения всех элементов массива:
    for (int i=0; i<sizeArr; i++)
    {
        sum += arr[i];
    }
 
    // Складываем в элементы массива новые значения (отминусованные):
    for (int i=1; i<sizeArr; i++)
    {
        arr[i] += arr[i]-sum;
    }
 
    // Вывод значений элементов массива на экран:
    for (int i=0; i<sizeArr; i++)
    {
        cout << "Значение " << i+1 << "-го\tэлемента, то есть, элемента arr["
             << i << "]\tравно\t" << arr[i] << endl;
    }
 
    return 0;
}
0
tron737
8 / 8 / 4
Регистрация: 29.12.2013
Сообщений: 27
12.07.2014, 21:35  [ТС] #4
gru74ik, а можешь сделать так, чтобы минусовалось по 10% от каждого элемента?
0
gru74ik
Эксперт CЭксперт С++
4207 / 1853 / 198
Регистрация: 20.02.2013
Сообщений: 4,992
Записей в блоге: 22
12.07.2014, 21:40 #5
Цитата Сообщение от tron737 Посмотреть сообщение
а можешь сделать так
могу

Цитата Сообщение от tron737 Посмотреть сообщение
чтобы минусовалось по 10%
От каждого элемента минусовалось по 10% чего? Самого элемента? Всей суммы значений всех элементов?
0
tron737
8 / 8 / 4
Регистрация: 29.12.2013
Сообщений: 27
12.07.2014, 21:45  [ТС] #6
10% от каждого элемента, не включая текущий, те Всей суммы значений всех элементов кроме текущего
0
gru74ik
Эксперт CЭксперт С++
4207 / 1853 / 198
Регистрация: 20.02.2013
Сообщений: 4,992
Записей в блоге: 22
12.07.2014, 21:56 #7
Так?
Дан массив, из каждого элемента, начиная со второго,
нужно вычесть по 10% от всех остальных элементов:
1 2 3 4 5
(2 - 0.3 - 0.4 - 0.5 - 0.1), (3 - 0.4 - 0.5 - 0.1 - 0.2),
(4 - 0.5 - 0.1 - 0.2 - 0.3), (5 - 0.1 - 0.2 - 0.3 - 0.4)
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
12.07.2014, 21:57 #8
Цитата Сообщение от tron737 Посмотреть сообщение
Дан массив, из каждого элемента, начиная со второго, нужно вычесть все остальные элементы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <numeric>
#include <vector>
#include <iterator>
 
 
int main()
{
   std::vector<int> vec ( std::istream_iterator<int>(std::cin) , (std::istream_iterator<int>()) ) ;
   if ( vec.size() < 2 )
      return 1 ;
   std::cout << "Result: " ;
   for ( std::vector<int>::const_iterator it = vec.begin() + 1 , itEnd = vec.end() ; it != itEnd ; ++it )
      std::cout << *it - std::accumulate ( vec.begin() , vec.end() , 0 ) + *it << ' ' ;
}
0
tron737
8 / 8 / 4
Регистрация: 29.12.2013
Сообщений: 27
12.07.2014, 21:57  [ТС] #9
да, так
0
gru74ik
Эксперт CЭксперт С++
4207 / 1853 / 198
Регистрация: 20.02.2013
Сообщений: 4,992
Записей в блоге: 22
12.07.2014, 22:12 #10
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/// [url]http://www.cyberforum.ru/cpp-beginners/thread1226526.html[/url]
/*
Дан массив, из каждого элемента, начиная со второго,
нужно вычесть по 10% от всех остальных элементов:
1 2 3 4 5
(2 - 0.3 - 0.4 - 0.5 - 0.1), (3 - 0.4 - 0.5 - 0.1 - 0.2),
(4 - 0.5 - 0.1 - 0.2 - 0.3), (5 - 0.1 - 0.2 - 0.3 - 0.4)
в результате получим:
1
0.7
1.8
2.9
4
*/
 
// Подключаем заголовочные файлы:
#include <iostream>     // для ввода-вывода
#include <windows.h>    // для отображения русского языка
 
using namespace std;    // подключаем стандартное пространство имён
 
int main()  // функция main согласно стандарту C++ должна быть типа int
{
    SetConsoleCP(1251);       // для отображения в консоли русского языка
    SetConsoleOutputCP(1251); // для отображения в консоли русского языка
 
    const int sizeArr = 5;  // размер массива
 
    double arr[sizeArr]={1, 2, 3, 4, 5}; // инициализация элементов массива значениями
 
    double sum=0;    // переменная, в которую мы сложим сумму
                     // 10% от значений всех элементов массива
 
    // Суммируем по 10% от значений всех элементов массива:
    for (int i = 0; i<sizeArr; i++)
    {
        sum += arr[i]/10;
        cout << sum << endl;
    }
 
    // Складываем в элементы массива новые значения (отминусованные):
    for (int i = 1; i<sizeArr; i++)
    {
        arr[i] = (arr[i]-sum) + (arr[i]/10);
    }
 
    // Вывод значений элементов массива на экран:
    for (int i = 0; i<sizeArr; i++)
    {
        cout << "Значение " << i+1 << "-го\tэлемента, то есть, элемента arr["
             << i << "]\tравно\t" << arr[i] << endl;
    }
 
    return 0;
}
1
tron737
8 / 8 / 4
Регистрация: 29.12.2013
Сообщений: 27
12.07.2014, 22:16  [ТС] #11
gru74ik, спасибо, то что нужно, но я почти уже сделал сам)
0
gru74ik
Эксперт CЭксперт С++
4207 / 1853 / 198
Регистрация: 20.02.2013
Сообщений: 4,992
Записей в блоге: 22
12.07.2014, 22:20 #12
Цитата Сообщение от tron737 Посмотреть сообщение
спасибо, то что нужно
Пожалуйста!

Цитата Сообщение от tron737 Посмотреть сообщение
сделал сам
Как по мне, так это самый лучший вариант!
0
Psilon
Master of Orion
Эксперт .NET
5913 / 4810 / 634
Регистрация: 10.07.2011
Сообщений: 14,409
Записей в блоге: 5
Завершенные тесты: 4
13.07.2014, 03:02 #13
тоже вариант:
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>
#include <iterator>
#include <vector>
#include <numeric>
 
using namespace std;
 
int main()
{
    int inarray[] = { 1, 2, 3, 4, 5 };
    vector<int> invec(inarray, inarray + sizeof(inarray) / sizeof(int));
    int sum = accumulate(invec.begin(), invec.end(), 0);
    
    vector<int> result;
    for each (int var in invec)
    {
        result.push_back(2*var - sum);
    }
    for each (int res in result)
    {
        cout << res << " ";
    }
    return 0;
}
0
gray_fox
13.07.2014, 03:47
  #14

Не по теме:

Цитата Сообщение от Psilon Посмотреть сообщение
C++
1
for each (int var in invec)
Это что, C++/CLI?

0
Psilon
Master of Orion
Эксперт .NET
5913 / 4810 / 634
Регистрация: 10.07.2011
Сообщений: 14,409
Записей в блоге: 5
Завершенные тесты: 4
13.07.2014, 10:24 #15
gray_fox,
Выполняет итерацию по массиву или коллекции. Это нестандартное ключевое слово доступно как в C++/CLI, так и в собственных проектах C++. Однако его использование не рекомендуется. Вместо этого рекомендуется использовать стандартный Основанное на диапазоне выражение for (C++).
IDE дура, в качестве заглушки foreach поставила этот блок. Лучше так, конечно:
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>
#include <iterator>
#include <vector>
#include <numeric>
 
using namespace std;
 
int main()
{
    int inarray[] = { 1, 2, 3, 4, 5 };
    vector<int> invec(inarray, inarray + sizeof(inarray) / sizeof(int));
    int sum = accumulate(invec.begin(), invec.end(), 0);
    
    vector<int> result;
    for  (int var : invec)
    {
        result.push_back(2*var - sum);
    }
    for  (int res : result)
    {
        cout << res << " ";
    }
    return 0;
}
1
13.07.2014, 10:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2014, 10:24
Привет! Вот еще темы с ответами:

Вывод на экран каждого второго элемента массива через рекурсивную функцию - C++
Добрый день, подскажите пожалуйста как вывести каждый второй элемент массива с помощью рекурсивной функции? В задаче сказано для...

Найти минимальный элемент матрицы, и, начиная с этого элемента, обнулить остальные - C++
найти минимальный элемент матрицы, и начиная с этого элемента, обнулить остальные. Отсортировать первую строку.

Вычесть из каждого элемента последовательности последний - C++
Даны натурально число n, действительные числа x1, ... , xn (n&gt;=2). Получить последовательность x1 - xn, x2 - xn, ... , xn-1 - xn. Нужно...

Отсортировать все элементы массива по убыванию начиная с отрицательного - C++
1.Отсортировать все элементы массива по убыванию начиная с отрицательного(элемент начала сортировки) примерно такое получится должно: ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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