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

Удалить самую длинную цепочку четных элементов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ колобот http://www.cyberforum.ru/cpp-beginners/thread901931.html
Здравствуте! Имеется игровая технология программирования си++ колобот,для того чтобы пройти какую нибудь миссию необходимо программировать на языке си++, мне необходимо что были решения именно для следующих миссий колобот: из блока бои сюжеты необходимо запрограммировать переселенец 1, 2 на си++ чтобы миссия была пройдена и из сюжета функции -функция, спираль . Конечно же использовать те...
C++ На с++билдер 6 (Описать функцию,которая подсчитывает количество чисел,принадлежащих интервалу [a,b] ) Описать функцию,которая подсчитывает количество чисел,принадлежащих интервалу в одномерном целочисленном массиве. Применить эту функцию к двум одномерным массивам разного размера. http://www.cyberforum.ru/cpp-beginners/thread901929.html
Перевод из Паскаля в C++ C++
Переведите программу из Паскаля в С++, пожалусйта Вот код : const nmax=100; var a: array of integer; i,j,n,m,min: integer; begin randomize; write('Введите размеры массива:');
C++ Сколько раз выполнится следующий цикл
Cколько раз выполнится цикл: int i = 0; whіlе (++i < 3) { Соnsоle.Writе(і); }
C++ Какие ошибки содержатся в представленном коде: http://www.cyberforum.ru/cpp-beginners/thread901892.html
Какие ошибки содержатся в представленном коде: сlass Тest { stаtіc voіd f(ref int а, оut іnt b) { a = 10 + b; } stаtic vоid Мaіn(string args) { int a;
C++ ошибка getch() программа с функцией getch() компилируется адекватно, но пр выполнении выскакивает такое окошко подробнее

Показать сообщение отдельно
KattyBelka
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 10
18.06.2013, 09:54  [ТС]
Спасибо большое!!!

Можно еще попросить об одном, объяснить некоторые моменты в программе.

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
#include <iostream>
#include <cstdlib>
#include <vector>//автоматическое изменение размеров вектора при вставке или удалении элементов
#include <algorithm>
#include <random>
using namespace std;
void print(vector<int>& v )//процедура вывода вектора на экран 
{
    for( const auto& i : v)
    {
        cout << i << " ";
    }
    cout <<"\n";
}
 
bool isEven( int value )
{
    return value % 2 == 0;//поиск четных элементов
}
int main()
{
    setlocale(LC_CTYPE,"Russian");
    const int size = 10;
    vector<int> v(size);//Создаем вектор, состоящий из size элемента типа int, значение которых равно 0   
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<> dis( 1, 100 );//генератор случайных чисел от 1 до 100
    // Заполнить вектор
    generate( begin(v), end(v), [&]() { return dis( gen ); } );
    print( v );//вызов функции
    typedef vector<int>::iterator viter;//создает один или более у-ней косвенного обращения между именами и его базовым типом
    pair<viter, viter> range( end(v), end(v) );/*(pair класс, который может хранить пару объектов в своих членах first и second)
    логическое объединение 2-х переменных 
    (range возвращает диапазон, в который можно вставить элемент, не нарушая порядок некоторой последовательности)*/
    auto it = begin( v );
    // Найти цепочку четных элементов
    while( it != end( v ) )
    {
        auto start = find_if( it, end(v), isEven );//(find_if возвращает итератор на первый элемент в диапазоне [begin,end), а предыдущему возращает true)
        if( start == end(v) ) break;
        auto end = find_if_not( start, std::end(v), isEven);
 
        if( distance( start, end ) > distance( range.first, range.second ) )
        {
            range.first = start;
            range.second = end;
        }
        it = end;
    }
    if( range.first != end(v) )
    {
        cout << "Цепочка четных элементов: " << *range.first << "..." << *prev(range.second) <<"\n";       
        // Удалить последовательность четных
        v.erase( range.first, range.second );
        print( v );//вызов функции
    }
    else
    {
        cout << "Нет четных элементов\n"; 
    }
 
    // Сортируем
    cout << "Отсортированная матрица:\n";
    sort(begin(v),end(v) );
    print( v );//вызов функции
}
Это та же самая программа просто немного поправленная в моем стиле=)
Особенно мне не понятно как работает цикл while (его начало)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru