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

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

Войти
Регистрация
Восстановить пароль
 
KingR
-6 / 6 / 1
Регистрация: 23.05.2010
Сообщений: 133
#1

algorithm: find_if - C++

13.12.2010, 17:00. Просмотров 1089. Ответов 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<iostream>
#include<algorithm>
#include<list>
using namespace std;
 
bool sumet(int x)
{
    int ost;
    int k=int(log10((double)x))+1;
    int* t=new int[k];
    for(int i=0;i<k;i++)
    {
        ost=x%10;
        x=x/10;
        t[i]=ost;
    }
    for(int i=0;i<k/2;i++)
        if(t[i]!=t[k-i-1])
        {
            return false;
        }
    return true;
}
void main()
{
    
    list<int> a;
    list<int>::iterator it;
    int n,x;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>x;
        a.push_back(x);
    }
    it=find_if(a.end(),a.end(),sumet);
    while(it!=a.end())
    {
        a.resize(n+1);
        it=a.insert(++it,0);
        it=find_if(it,a.end(),sumet);
    }
    it=a.begin();
    while(it!=a.end())
    {
        cout<<*it<<" ";
        it++;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 17:00     algorithm: find_if
Посмотрите здесь:

Find_if - C++
#include &quot;stdafx.h&quot; #include &lt;vector&gt; #include &lt; map&gt; #include &lt;string&gt; #include &lt;algorithm&gt; using namespace std; class...

Error in std::find_if - C++
Привет всем. Подскажите плз. Что std::find_if не поддерживает обратных итераторов? Почему этот код вызывает ошибку компиляции? ...

stl find_if msvs6.0 - C++
Здравствуйте! У меня вопрос: почему алгоритмы из &lt;algorithm&gt; в вижуал студио 6 не работают? тоесть выдает такие ошибки на такой код: ...

find_if, нужна помощь - C++
Здравствуйте! Помогите решить проблему пожалуйста. Тут все просто, но у меня куча ошибок ( Вот структура struct HardWare { ...

Ошибка. Алгоритм find_if() - C++
Подскажите пожалуйста, почему в данной программе, если ввести &quot;левое&quot; значение, то программа заканчивается аварийно? Как я понимаю, то...

Можно ли применить find_if к вектору - C++
Можно ли применить find_if к вектору? Нужно найти среди компонент вектора первое число, которое больше задаваемой величины (в векторе...

Передача параметра предикату в find_if - C++
скажите, можно ли так сдалать: it - итератор it=find_if(it=stud.begin(),it!=stud.end(),function(name)) я хочу булевской функции...

Как использовать std::find_if? - C++
Добрый день! Хочу использовать find_if, в реализации сортировки вставками. Но с синтаксисом у меня проблема. Помогите исправить код ...

algorithm - C++
дано последовательность целих чисел 1.для каждого елемента найти количество цифр числа( count_if) 2.после каждого симетріческого...

<algorithm> - C++
есть перегруженная функция sort() sort (iter start, iter end, comp func); эта версия позволяет самостоятельно задавать функцию...

Предикат для find_if: вернуть итератор указателя на struct, поле которой соответствует искомому значению - C++
Если у меня есть вектор в котором лежат указатели на struct. Мне необходимо вернуть итератор указателя на struct поле которой...

Библиотека <algorithm> в [c++] - C++
Библиотека &lt;algorithm&gt; в как она работает? если можно то с примерами.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
14.12.2010, 03:45     algorithm: find_if #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
27
28
29
30
31
32
33
34
35
36
37
38
39
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
//////////////////////////////////////////////////////////////////////////////////////
bool  is_symmetric_num(const int  n)
{
    std::ostringstream  sout;  
    sout << n;
    T_str  s(sout.str());
    return std::equal(s.begin(), s.end(), s.rbegin());
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{    
    const int N_MIN = 0;
    std::cout << "n_max = ";
    int n_max = 0;
    std::cin >> n_max;
    std::cout << "The symmetric numbers from a segment ["
              << N_MIN
              << ", "
              << n_max
              << "]:"
              << std::endl;
 
    for(int i = N_MIN; i <= n_max; ++i)
    {
        if(is_symmetric_num(i))
        {
            std::cout << i                      
                      << '\t';
        }
    }
    std::cout << std::endl;
}
KingR
-6 / 6 / 1
Регистрация: 23.05.2010
Сообщений: 133
14.12.2010, 19:56  [ТС]     algorithm: find_if #3
Цитата Сообщение от Mr.X Посмотреть сообщение
Не очень понял что такое "симетрическии числа", но если имелись в виду симметричные, то вот так можно:

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
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
//////////////////////////////////////////////////////////////////////////////////////
bool  is_symmetric_num(const int  n)
{
    std::ostringstream  sout;  
    sout << n;
    T_str  s(sout.str());
    return std::equal(s.begin(), s.end(), s.rbegin());
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{    
    const int N_MIN = 0;
    std::cout << "n_max = ";
    int n_max = 0;
    std::cin >> n_max;
    std::cout << "The symmetric numbers from a segment ["
              << N_MIN
              << ", "
              << n_max
              << "]:"
              << std::endl;
 
    for(int i = N_MIN; i <= n_max; ++i)
    {
        if(is_symmetric_num(i))
        {
            std::cout << i                      
                      << '\t';
        }
    }
    std::cout << std::endl;
}
упс симетрическии .... но мне нужно имено сделать ету задачу при помоще алгоритма файнд_иф
и там не то штоб вивести симетрическии числа а вставить после них 0 а потом уже вивести список етот
как я понял там проблема с размером листа
Ответ Создать тему
Опции темы

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