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

Строки. Задача по С++ - C++

Восстановить пароль Регистрация
 
helga182
 Аватар для helga182
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 9
23.01.2012, 15:55     Строки. Задача по С++ #1
Преобразовать строку так, чтобы буквы каждого слова в ней были отсортированы по возрастанию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2012, 15:55     Строки. Задача по С++
Посмотрите здесь:

Задача на строки C++
задача на строки C++
Задача на строки ( C++
C++ задача на строки.с++
задача на строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.01.2012, 16:42     Строки. Задача по С++ #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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
typedef std::string T_str;
typedef std::vector<T_str> T_vec;
 
int split_str_to_vec(const T_str , const T_str, T_vec& ); 
 
int main()
{
   T_str s("Hello world B A");
   T_vec v;
   split_str_to_vec(s, " \t\n", v);
   std::sort(v.begin(), v.end());
   s.erase();
   std::for_each(v.begin(), v.end(), [&] ( T_str str ) { s += str; s+= " "; });
   std::cout << s << std::endl;
   return 0;
}
   
 
int split_str_to_vec(const T_str s, const T_str DELIM, T_vec& v)
{
   size_t l, r;
 
   for ( l = s.find_first_not_of(DELIM), r = s.find_first_of(DELIM, l) ; 
      l != std::string::npos ; l = s.find_first_not_of(DELIM, r), r = s.find_first_of(DELIM, l) )
      v.push_back(s.substr(l, r - l));
   return v.size();
}
http://liveworkspace.org/code/191583...7f00cdcab8ada3
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
23.01.2012, 16:50     Строки. Задача по С++ #3
go, а разве не так? Вроде же не слова надо отсортировать а
Цитата Сообщение от helga182 Посмотреть сообщение
буквы каждого слова
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
23.01.2012, 16:53     Строки. Задача по С++ #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
24
25
26
27
28
29
#include <iostream>
#include <algorithm>
#include <string>
 
int main()
{
    std::string s;
    std::cout << "input string: ";
    std::getline(std::cin, s);
 
    const std::string delim = " ,.:;!?";
    size_t pos_start = s.find_first_not_of(delim);
    size_t pos_end = s.find_first_of(delim, pos_start);
 
    while((pos_start != std::string::npos))
    {
        if(pos_end == std::string::npos)
        {
            std::sort(s.begin() + pos_start, s.end());
            break;
        }
 
        std::sort(s.begin() + pos_start, s.begin() + pos_end);
        pos_start = s.find_first_not_of(delim, pos_end);
        pos_end = s.find_first_of(delim, pos_start);
    }
 
    std::cout << "result: " << s << "\n";
}
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
23.01.2012, 16:55     Строки. Задача по С++ #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
 
int main()
{
    std::vector<std::string> sentence;
    std::istream_iterator<std::string> start(std::cin), end;
    std::copy(start, end, std::back_inserter(sentence));
    for(auto word : sentence)
    {
        std::sort(std::begin(word), std::end(word));
        std::cout << word << " ";
    }
    return 0;
}
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
23.01.2012, 16:56     Строки. Задача по С++ #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
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cctype>
 
int main()
{
        const int arraySize = 100;
        char str[arraySize];
 
        std::cin.getline(str,arraySize);
 
        int word = 0;
        int space = 0;
 
        for(int i = 0; i <= strlen(str); i++)
                if(isalpha(str[i]))
                        word++;
                else
                {
                        std::sort(str+space,str+space+word);
                        space = i+1;
                        word = 0;
                }
 
        std::cout << str << std::endl;
 
        return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.01.2012, 19:17     Строки. Задача по С++ #7
soon, не заметил. Спасибо. Тогда так (вектор не нужен)
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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
typedef std::string T_str;
 
T_str& my_fun(T_str &, const T_str); 
 
int main()
{
   T_str s(" hello world  world hello B A");
   std::cout << my_fun(s, " \t\n") << std::endl;
   return 0;
}
   
 
T_str& my_fun(T_str& s, const T_str DELIM)
{
   size_t l, r;
   T_str tmp;
 
   for ( l = s.find_first_not_of(DELIM), r = s.find_first_of(DELIM, l) ; 
      l != std::string::npos ; l = s.find_first_not_of(DELIM, r), r = s.find_first_of(DELIM, l) )
   {
      tmp = s.substr(l, r - l);
      std::sort(tmp.begin(), tmp.end());
      s.erase(l, r - l);
      s.insert(l, tmp);
   }
   return s;
}
http://liveworkspace.org/code/9d8f4c...0d16f5218cb7df
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2012, 20:06     Строки. Задача по С++
Еще ссылки по теме:

C++ Задача на строки(С/С++)
Задача на строки C++
Задача на строки C++

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

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.01.2012, 20:06     Строки. Задача по С++ #8
Цитата Сообщение от helga182 Посмотреть сообщение
Преобразовать строку так, чтобы буквы каждого слова в ней были отсортированы по возрастанию.
Конец ввода - EOF(Ctrl+Z в винде, Ctrl+D в линухе)
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <vector>
#include <sstream>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::vector < std::string > words( std::istream_iterator< std::string > (std::cin), std::istream_iterator< std::string > () );
    std::transform( words.begin(), words.end(), std::ostream_iterator< std::string > (std::cout, " "), [] ( std::string str ) { std::sort( str.begin(), str.end() ); return str; } );
}
Либо можно по ходу ввода результат выводить.
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <sstream>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::transform( std::istream_iterator< std::string > (std::cin), std::istream_iterator< std::string > (), std::ostream_iterator< std::string > (std::cout, "\n"), [] ( std::string str ) { std::sort( str.begin(), str.end() ); return str; } );
}
Yandex
Объявления
23.01.2012, 20:06     Строки. Задача по С++
Ответ Создать тему
Опции темы

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