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

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

Войти
Регистрация
Восстановить пароль
 
Min_Fin
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 9
#1

Подстроки. - C++

07.11.2009, 09:17. Просмотров 450. Ответов 9
Метки нет (Все метки)

Нужна помощь. Я разбил строку на подстроки (слова). Как мне сделать так, чтобы эти подстроки шли в обратном порядке? Например,было: "Назвался груздем полезай", а стало: "полезай груздем Назвался". Язык visual c++. Вот код разбивки на подстроки:

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
#include <stdio.h>
#include<iostream.h>
#include <windows.h>
 
 
 
int main()
{
char S[150]; //объявлет строку
char* pS; //объявляет указатель на строку
char* Del=" .,"; //объявляет и инициализирует указатель на строку разделителей
CharToOem ("Назвался груздем, пеняй на себя.", S); //преобразует символы кириллицы
pS = strtok (S, Del); //инициализирует указатель адресом первого слова
 
//вывод подстрок:
if (pS) cout << pS << '\n'; 
while (pS)
{
pS = strtok(NULL, Del);
if (pS) cout << pS << '\n';
}
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2009, 09:17     Подстроки.
Посмотрите здесь:

C++ Удаление подстроки (С)
C++ Поиск подстроки
Подстроки C++
C++ вывод подстроки
Поиск подстроки C++
Поиск подстроки C++
Поиск подстроки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SONNY
8 / 8 / 0
Регистрация: 30.05.2009
Сообщений: 47
07.11.2009, 09:21     Подстроки. #2
массив указателей и std::reverse
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
07.11.2009, 14:37     Подстроки. #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
#define MAXLINE 1024
int main(void)
{
    char s[MAXLINE], tokens[64][MAXLINE];
    char *p, *delim = " .,:;";
    int i;
 
    printf("Введите текст: ");
    if(fgets(s, sizeof(s), stdin) == NULL)
        return 0;
    if(s[strlen(s)-1] == '\n')
        s[strlen(s)-1] = '\0';
 
    for(i = 0, p = s; (p = strtok(p, delim)) != NULL; i++, p = NULL)
        strncpy(tokens[i], p, MAXLINE);
    while(--i >= 0)
        printf("%s\n", tokens[i]);
    return 0;
}
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
07.11.2009, 15:22     Подстроки. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    const int n = 3;
    char *s[n] = {"aaa","bbb","ccc"};
    vector<string>a(s,s+n);
    reverse(a.begin(),a.end());
    copy(a.begin(),a.end(),ostream_iterator<string>(cout," "));
    return 0;
}
SONNY
8 / 8 / 0
Регистрация: 30.05.2009
Сообщений: 47
07.11.2009, 16:44     Подстроки. #5
А зачем в вектор засовывать?Есть какой-то скрытый смысл?
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
07.11.2009, 17:08     Подстроки. #6
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    const int n = 4;
    char *s[n] = {"aaa","bbb","ccc","ddd"};
    reverse(s,s+n);
    copy(s,s+n,ostream_iterator<char*>(cout," "));
    return 0;
}
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
07.11.2009, 17:38     Подстроки. #7
Зачем вообще делать reverse и copy, если можно сразу распечатать массив указателей s задом наперед?
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
07.11.2009, 17:41     Подстроки. #8
Gravity, ну ему наверно нужно чтобы сам порядок слов изменился а от того что по массиву ходить с начала в конец или с конца в начало он что изменится?
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
07.11.2009, 17:52     Подстроки. #9
А что нам мешает сделать конкатенацию в обратном порядке?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2009, 08:05     Подстроки.
Еще ссылки по теме:

C++ Поиск подстроки
Поиск подстроки C++
C++ Создать функции добавления подстроки и удаления подстроки
C++ Поиск подстроки
Поиск подстроки C++

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

Или воспользуйтесь поиском по форуму:
Min_Fin
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 9
08.11.2009, 08:05  [ТС]     Подстроки. #10
Спасибо. Разобрался...Просто напечал массив с конца.
Yandex
Объявления
08.11.2009, 08:05     Подстроки.
Ответ Создать тему
Опции темы

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