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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2011, 20:31   #1
Лерка
Новичок
Джуниор
 
Регистрация: 30.05.2011
Сообщений: 1
По умолчанию Задания на вектора в си++

Нужно сделать задания по программированию на языке с++,а я в этом воообще не сильна( помогите кто-нибудь пожалуйста!

1.Отсортировать по убыванию только те элементы вектора, которые являются числами Фибоначчи
2.Удалить из вектора все элементы, сумма цифр которых больше заданного числа К.
3.Вставить после каждого чётного элемента второго вектора сумму минимального и максимального числа первого вектора
Лерка вне форума Ответить с цитированием
Старый 30.05.2011, 20:42   #2
N1KeL
Пользователь
 
Аватар для N1KeL
 
Регистрация: 20.04.2009
Сообщений: 58
По умолчанию

Может с этим лучше во фриланс?
N1KeL вне форума Ответить с цитированием
Старый 30.05.2011, 23:25   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Лерка

2.Удалить из вектора все элементы, сумма цифр которых больше заданного числа К.

Код:
#include <vector>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <locale>

// Удалить из вектора все элементы, сумма цифр которых больше заданного числа К. 

#ifndef _countof
#define _countof(x) (sizeof(x) / sizeof((x)[0]))
#endif

typedef std::vector<int> V;

int sum(int number)
{
	int result = 0;
	for ( ; number; number /= 10)
		result += number % 10;
	return result;
}

struct Z
{
	Z(int K) : K_(K) {}
	int operator()(int number) const
	{
		return sum(number) > K_;
	}
	int K_;
};

void remove(V& v, int K)
{
	v.erase(
		std::remove_if(v.begin(), v.end(), Z(K)),
		v.end()
		);
}

std::ostream& operator<<(std::ostream& os, const V& v)
{
	typedef std::ostream_iterator<V::value_type> O;
	std::copy(v.begin(), v.end(), O(os, " "));
	return os;
}

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

	const int arr[] = {5, 100, 200, 300, 400, 101, 202, 1000, 10001};
	V v(arr, arr + _countof(arr));

	const int K = 2;
	remove(v, K);

	std::cout << v << std::endl;
		
	return 0;
}
Пример работы программы: http://codepad.org/8nXo9f9G
Rififi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка вектора DarkEN_ANGEL Общие вопросы C/C++ 11 24.05.2012 18:51
Сортировка вектора G-58 Visual C++ 2 18.05.2011 21:26
Вектора C++ DimaSoldier Помощь студентам 4 15.10.2010 00:08
Получение вектора PastoriXx Общие вопросы .NET 0 14.05.2010 19:52
элементы вектора realabs Общие вопросы C/C++ 7 03.10.2009 17:21