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

STL - C++

Восстановить пароль Регистрация
 
dreeqa
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 11
18.01.2011, 16:23     STL #1
помогите,нужно написать прогу,чтоб каждый отрицательный элемент последовательности заменить на его квадрат.это всё при помощи STL
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2011, 16:23     STL
Посмотрите здесь:

C++ STL
C++ STL
C++ STL в С++
STL C++
C++ STL.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.01.2011, 16:31     STL #2
dreeqa, Прошу.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
    std::transform(vec.begin(), vec.end(), vec.begin(), [](int elem) -> int
    {
        return elem < 0 ? elem*elem : elem;
    });
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout<<'\n';
    std::cin.get();
    return 0;
}
dreeqa
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 11
18.01.2011, 16:44  [ТС]     STL #3
я пытался ток что запустить выводит 8 ошибок!!!
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.01.2011, 17:16     STL #4
dreeqa, Visual Studio 2010 или GCC 4.5.0 нужен

Добавлено через 4 минуты
Вот так на любом потянет, что соответствуют стандарту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
 
struct what:public std::unary_function<int, int>
{
    result_type operator () (argument_type one)
    {
        return one < 0 ? one*one : one;
    }
};
 
int main()
{
        std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
        std::transform(vec.begin(), vec.end(), vec.begin(), what());
        std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
        std::cout<<'\n';
        std::cin.get();
        return 0;
}
dreeqa
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 11
18.01.2011, 17:48  [ТС]     STL #5
спасибо..прога пашет,ток если букву какую небудь клацаешь и сразу выкидует..а можно как небудь чтоб 10 символов ввести..а потом ответ???и можно как небудь эту же прогу написать,чтоб она была реализованая через algo STL
Mr.X
Эксперт С++
 Аватар для Mr.X
2798 / 1574 / 246
Регистрация: 03.05.2010
Сообщений: 3,651
18.01.2011, 17:51     STL #6
Ну еще вот так можно:
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
68
69
70
71
72
//////////////////////////////////////////////////////////////////////////////////////
//нужно написать прогу,чтоб каждый отрицательный элемент последовательности заменить 
//на его квадрат.это всё при помощи STL
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
//////////////////////////////////////////////////////////////////////////////////////
typedef int                 T_num;
typedef std::vector<T_num>  T_nums;
typedef std::string         T_str;
//////////////////////////////////////////////////////////////////////////////////////
void  print_nums
    (        
        const T_str&   prompt,
        const T_nums&  nums
    )
{
    std::cout << prompt
              << std::endl;
    if(nums.empty())
    {
        std::cout << "вектор пуст.";
    }
    else
    {
        std::copy(nums.begin(), nums.end(), 
                  std::ostream_iterator<T_nums::value_type>(std::cout, "\t"));
    }
    std::cout << std::endl;    
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));   
    srand(static_cast<unsigned>(time(0)));
    const T_num VECT_SIZE = 10;
 
    struct  T_gen_with_mod
    {
        const T_num MOD_;
        //-----------------------------------------------------------------------------
        T_gen_with_mod(T_num mod) : MOD_(mod)
        {}
        //-----------------------------------------------------------------------------
        T_num  operator() ()
        {
            return  rand() % MOD_ - MOD_ / 2;
        }
    };
 
    T_nums  nums;
    std::generate_n(std::back_inserter(nums), VECT_SIZE, T_gen_with_mod(VECT_SIZE));
    print_nums("Исходный вектор:", nums);
 
    struct  T_repl_neg_to_this_square
    {
        void  operator() (T_num&  num)
        {
            if(num < 0)
            {
                num *= num;
            }
        }
    };
 
    std::for_each(nums.begin(), nums.end(), T_repl_neg_to_this_square());
    print_nums("Вектор после замены отрицательных элементов на их квадраты:", nums);    
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.01.2011, 18:09     STL #7
dreeqa, А это что не через алгоритмы?) Учите STL товарищ.
Прекращение ввода - ввод НЕцифры
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
 
struct what:public std::unary_function<int, int>
{
    result_type operator () (argument_type one)
    {
        return one < 0 ? one*one : one;
    }
};
 
int main()
{
        std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
        std::transform(vec.begin(), vec.end(), vec.begin(), what());
        std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
        std::cout<<'\n';
        system("pause");
        return 0;
}
dreeqa
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 11
19.01.2011, 17:02  [ТС]     STL #8
спасибо!!!знач нам препод не так объяснил

Добавлено через 22 часа 44 минуты
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
#include<iostream>
#include<conio.h>
#include<vector>
#include<algorithm>
#include<ctime>
using namespace std;
class prior
{
public:
    bool operator()(int x)
    {
        if(x>10)
            return true;
        else
        return false;
    }
};
void main()
{
    srand((unsigned)time(0));
    setlocale(LC_ALL,"Russian");
    vector<int> ls,ls2;vector<int>::iterator i,j;prior s;
    for(int k=0;k<10;k++)
    {
        ls.push_back(rand()%25);
    }
    for(j=ls.begin();j!=ls.end();++j)
        cout<<*j<<' ';
    cout<<endl;
    remove_if(ls.begin(),ls.end(),prior());
    for(j=ls.begin();j!=ls.end();++j)
        cout<<*j<<' ';
    system("pause");
}
Помогите исправить,чтоб, каждый отрицательный элемент последовательности заменить на его квадрат
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2011, 18:30     STL
Еще ссылки по теме:

C++ STL
C++ STL
C++ STL

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

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
19.01.2011, 18:30     STL #9
dreeqa,
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
#include<iostream>
#include<conio.h>
#include<vector>
#include<algorithm>
#include<ctime>
#include <iterator>
 
using namespace std;
 
int main()
{
srand((unsigned)time(0));
vector<int> ls,ls2;
vector<int>::iterator i,j;
for(int k=0;k<10;k++)
{
ls.push_back(rand()%50-25);
}
for(i=ls.begin();i!=ls.end();++i)
cout<<*i<<' ';
cout<<endl;
for(i=ls.begin();i!=ls.end();++i)
if(*i < 0)
*i = *i * (*i);
cout << '\n';
for(i=ls.begin();i!=ls.end();++i)
cout<<*i<<' ';
}
Yandex
Объявления
19.01.2011, 18:30     STL
Ответ Создать тему
Опции темы

Текущее время: 11:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru