Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2011, 16:09   #1
zzz6
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 60
По умолчанию Вычислить сумму элементов массива, порядковые номера которых совпадают со значением этого элемента.

Задана последовательность N целых чисел. Вычислить сумму элементов массива, порядковые номера которых совпадают со значением этого элемента.
Подскажите хоть что ни буть, в голову ни фига ни лезет! =)
zzz6 вне форума Ответить с цитированием
Старый 17.10.2011, 16:12   #2
k1moshka
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 16
По умолчанию

Если ничего не лезет в голову пиши псевдокод мне помогает (:
Задача очень простая
k1moshka вне форума Ответить с цитированием
Старый 17.10.2011, 17:07   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

zzz6

Задана последовательность N целых чисел. Вычислить сумму элементов массива, порядковые номера которых совпадают со значением этого элемента.

Код:
#include <boost/range/numeric.hpp>
#include <boost/range/adaptor/filtered.hpp>

#include <iostream>
#include <locale>

int main()
{
	setlocale(LC_ALL, "");

	const int arr[] = { 10, 1, 3, 3 };
	//                   0  1  2  3

	using boost::adaptors::filtered;
	using boost::accumulate;

	size_t index = 0;

	std::cout << "Sum: "
		<< accumulate(arr | filtered([&index](int i) { return i == index++; }), 0)
		<< std::endl;

	return 0;
}
Пример работы программы: http://liveworkspace.org/code/81bbb6...b3c8d9dd881405
Rififi вне форума Ответить с цитированием
Старый 18.10.2011, 00:00   #4
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

Код:
int function(int* array, int size)
{
        int sum = 0;
        for(int i = 0; i < size; ++i){
                if(array[i] == i) sum += i;
        }
        return sum;
}

int main()
{
        int array[] = {0,1,2,3,4};
        int res = function(array,5);
        return 0;
}
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 18.10.2011, 03:19   #5
HeLiO
Пользователь
 
Регистрация: 28.12.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
zzz6

Задана последовательность N целых чисел. Вычислить сумму элементов массива, порядковые номера которых совпадают со значением этого элемента.

Код:
#include <boost/range/numeric.hpp>
#include <boost/range/adaptor/filtered.hpp>

#include <iostream>
#include <locale>

int main()
{
	setlocale(LC_ALL, "");

	const int arr[] = { 10, 1, 3, 3 };
	//                   0  1  2  3

	using boost::adaptors::filtered;
	using boost::accumulate;

	size_t index = 0;

	std::cout << "Sum: "
		<< accumulate(arr | filtered([&index](int i) { return i == index++; }), 0)
		<< std::endl;

	return 0;
}
Пример работы программы: http://liveworkspace.org/code/81bbb6...b3c8d9dd881405
Классический вые**н))) чего на шарпе не забабахал в отдельном потоке то ?))
HeLiO вне форума Ответить с цитированием