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

Вставляем 0 элемент - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти наибольший элемент побочной диагонали матрицы http://www.cyberforum.ru/cpp-beginners/thread429838.html
Найдите наибольший элемент побочной диагонали заданной матрицы A(N, N) и выведите на печать всю строку, в которой он находится.
C++ Перевести программу в С++ Вот это нужно оформить в C++ #include <cstring> #include <iostream> using namespace std; bool orly(char *s, char *f) { while(*s && *f) if (*s++!=*f++) return false; http://www.cyberforum.ru/cpp-beginners/thread429788.html
C++ Генерация простых чисел
Всем привет! Кто знает не сложные и быстрые алгоритмы генерации больших простых и псевопростых чисел, тест ферма что работает не стабильно в совокупности с библиотекой CBigNumber. Может есть смысл использовать какие то другие библиотеки или компоненты...посоветуйте, у кого есть какие задумки. Повторюсь что нужен достаточно простой алгоритм, чтобы в течение дня всё написать и отладить
C++ составить программу нахождения максимума из положительных чисел кратных 2
составить программу нахождения максимума из положительных чисел кратных 2,а также сумму всех положительных чисел. числа вводяться с клавиатуры. признак конца ввода -ввод 0. пожалуйста решите на экзамене сижу(
C++ В строке, состоящей из слов и знаков препинания(пробел.:,!?-;),найти слово максимальной длины, не содержащее заданную букву http://www.cyberforum.ru/cpp-beginners/thread429705.html
В строке, состоящей из слов и знаков препинания(пробел.:,!?-;), найти слово максимальной длины, не содержащее заданную букву/
C++ Системы Ребята, выручайтеБ вопрос жизни и смерти Написать на языке С или С++ функцию, удовлетворяющую следубщим требованиям, вызвать её в программе main() 2.1 прототип char* f( char*v1, char*v2, char*r, int n); 2.2 параметры v1, v2 -указатели исходных строк, r - указатель результирующей строки, n - размер результирующей строки 2.3 Назначение: исходные строки являются символьным представлением... подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2012, 18:16     Вставляем 0 элемент
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
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
// Функтор, срабатывающий на n-том положительном элементе
// Параметры шаблона:
// - T - тип проверяемых элементов
// - N - номер положительного элемента, на котором должен сработать функтор
template<typename T, size_t N>
// Должен наследоваться от std::unary_function
class IsNthPositive : public std::unary_function<T, bool>
{
public:
    // В конструкторе счётчик обнуляется
    IsNthPositive():
    m_counter()
    {
    }
    
    // Основной оператор, проверяющий условие
    bool operator()(const T& arg)
    {
        // Если передан положительный элемент - увеличиваем счётчик
        if (T() < arg)
            ++m_counter;
        
        // Если отсчитали нужное количество элементов - обнуляём счётчик и
        // возвращаем true
        if (m_counter == N)
        {
            m_counter = 0;
            
            return true;
        }
        
        // В противном случае (насчитано элементов меньше N) возвращаем false
        return false;
    }
    
private:
    // Счётчик элементов
    size_t m_counter;
};
 
int main()
{
    // Создаём и заполняем вектор с клавиатуры (конец ввода - Ctrl+X)
    std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
    
    // Первая позиция поиска - начальный элемент вектора
    std::vector<int>::iterator pos = vec.begin();
    
    // До тех пор, пока не достигли конца вектора - продолжаем поиск по условию
    // и запоминаем найденную позицию
    while ((pos = std::find_if(pos, vec.end(), IsNthPositive<int, 3>())) != vec.end())
        // вставляем 0 в найденную позицию, дальнейший поиск начинаем через две
        // позиции (пропускаем вставленный элемент и следующий, поскольку
        // следующий как раз является третьим, а нам надо начать отсыёт с
        // четвёртого)
        pos = vec.insert(pos, 0) + 2;
    
    // Выводим результирующий вектор
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, "  "));
    
    return 0;
}
 
Текущее время: 01:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru