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

Написать программу для перестановки рядом стоящих слов в строке - C++

Восстановить пароль Регистрация
 
Spect
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 75
17.02.2014, 19:46     Написать программу для перестановки рядом стоящих слов в строке #1
Задача: Написать программу для перестановки рядом стоящих слов в строке, используя стандартные функции работы с строками.
Пример: "it is simple text" --> "is it text simple"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2014, 19:46     Написать программу для перестановки рядом стоящих слов в строке
Посмотрите здесь:

C++ Поиск одинаковых рядом стоящих элементов
Есть текст. Требуется(мне) написать программу для вывода каждого слова в столбик и рядом, чтоб было написано, сколько раз упоминается в тексте C++
Как написать программу, которая посчитает количество слов в строке? C++
C++ Написать программу заданную рядом Тейлора
Количество слов в заданной строке (для каждого из слов) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
17.02.2014, 21:39     Написать программу для перестановки рядом стоящих слов в строке #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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <string>
 
int main()
{
    std::string s, temp, final;
    std::string* str;
    int index = 0, counter = 0, size;
    std::cout << "Enter string: ";
    getline(std::cin, s);
    
    while(s[index])
    {
        if(s[index] == ' ')
        {
            while(s[index] == ' ')
                index++;
            counter++;
        }
        index++;
    }
 
    size = counter + 1;
    str = new std::string[size];
    counter = 0;
    index = 0;
    
    while(s[index])
    {
        if(s[index] != ' ')
        {
            temp += s[index];
            if(!s[index + 1])
            {
                str[counter] = temp;
            }
        }
        else
        {
            if(temp != "")
            {
                str[counter] = temp;
                temp.clear();
                counter++;
            }
        }
        index++;
    }
    
    for(int i = 0; i < size; i++)
    {
        if(i + 1 == size)
        {
            final += str[i] + " ";    
            break;
        }
        if(!(i % 2))
            std::swap(str[i], str[i + 1]);
        final += str[i] + " ";
    }
    
    std::cout << "\n  " << final << "\n\n";
    
    system("pause");
    return 0;    
}
Spect
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 75
24.02.2014, 21:22  [ТС]     Написать программу для перестановки рядом стоящих слов в строке #3
GuGo1991, выдает ошибку "debug assertion failed xstring line 1441", но в принципе если пропускать, в итоге слова переставяться

Добавлено через 2 минуты
GuGo1991, а еще можно этот код через функции организовать?

Добавлено через 1 час 7 минут
Почему код не работает?

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
#include <iostream>
#include <string>
#include <math.h>
 
 using namespace std;
 
 void F1(int size,int counter)
 {
     counter=0;
     string final;
     string* str;
     size = counter + 1;
     str = new string[size];
      for(int i = 0; i < size; i++)
    {
        if(i + 1 == size)
        {
            final += str[i] + " ";    
            break;
        }
        if(!(i % 2))
            swap(str[i], str[i + 1]);
        final += str[i] + " ";
    }
    counter=0;
    cout << "\n  " << final << "\n\n";
 }
 void wh(int index,int counter,int size)
 {
     index=0;
     counter=0;
     string s;
     while(s[index])
    {
        if(s[index] == ' ')
        {
            while(s[index] == ' ')
                index++;
            counter++;
        }
        index++;
    }
     counter = 0;
     size = counter + 1;
 }
 
 void main()
{
    string s, temp, final;
    string* str;
    int index = 0, counter = 0,size;
    cout << "Enter string: ";
    getline(cin, s);
    wh(index,counter,size);
    F1(size,counter);
    
    system("pause");
        
}
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
24.02.2014, 21:36     Написать программу для перестановки рядом стоящих слов в строке #4
Spect, то есть за main?

Кликните здесь для просмотра всего текста
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
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <string>
 
int getQuant(std::string s)
{
    int index = 0, counter = 0;
    while(s[index])
    {
        if(s[index] == ' ')
        {
            while(s[index] == ' ')
                index++;
            counter++;
        }
        index++;
    }
    return counter;
}
 
void fillArr(std::string* str, std::string s)
{
    int index = 0, counter = 0;
    std::string temp;
    while(s[index])
    {
        if(s[index] != ' ')
        {
            temp += s[index];
            if(!s[index + 1])
            {
                str[counter] = temp;
            }
        }
        else
        {
            if(temp != "")
            {
                str[counter] = temp;
                temp.clear();
                counter++;
            }
        }
        index++;
    }
}
 
std::string swapedString(std::string* str, std::string final, int size)
{
    for(int i = 0; i < size; i++)
    {
        if(i + 1 == size)
        {
            final += str[i] + " ";    
            break;
        }
        if(!(i % 2))
            std::swap(str[i], str[i + 1]);
        final += str[i] + " ";
    }
    return final;
}
 
int main()
{
    std::string s, final;
    std::string* str;
    int size;
    std::cout << "Enter string: ";
    getline(std::cin, s);
 
    size = getQuant(s) + 1;
    str = new std::string[size];
    
    fillArr(str, s);
    final = swapedString(str, final, size);
    
    std::cout << "\n  " << final << "\n\n";
    
    system("pause");
    return 0;    
}
Yandex
Объявления
24.02.2014, 21:36     Написать программу для перестановки рядом стоящих слов в строке
Ответ Создать тему
Опции темы

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