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

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

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

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

07.11.2009, 09:17. Просмотров 457. Ответов 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2009, 09:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подстроки. (C++):

Найти длину максимальной подстроки, такой что в этой подстроке не существует подстроки равной какой-то строке - C++
Не могу решить задачу, я понял саму задачу. Не могу написать код, помогите, плз! У Дроида-На2а есть строка S, и K строк ai. Ваша задача...

Создать функции добавления подстроки и удаления подстроки - C++
Написать в программе функции добавления подстроки и удаления подстроки в любом месте данного рядка.

Разбить строку на все "связные" подстроки. Получившиеся подстроки записать в вектор - C++
Нужно разбить минимальную строку на &quot;связные&quot; подстроки Например: строка Mas: &quot;qwe&quot; нужны подстроки: &quot;q&quot;,&quot;w&quot;,&quot;e&quot;,&quot;qw&quot;,&quot;we&quot;,&quot;qwe&quot;....

Мне надо сделать поиск последнего вхождения подстроки s1 в строку s(с функцией LastPos, не strstr). В этом коде просто вхождение подстроки в строку. - C++
#include &lt;stdio.h&gt; int count_of_substrings(string s, string s1){ int start = 0; int count = 0; int pos = 0; ...

Удалить слова, начинающиеся с заданной подстроки, а слова без заданной подстроки, упорядочить по возрастанию - C++
С консоли осуществляется ввод массива строк. Удалить все слова, начинающиеся с заданной подстроки. Все строки, не содержащие заданной...

Подстроки - C++
Дано предложение удалить из него все подстроки str1. Написать программу на СИ

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SONNY
8 / 8 / 0
Регистрация: 30.05.2009
Сообщений: 47
07.11.2009, 09:21 #2
массив указателей и std::reverse
0
Gravity
562 / 556 / 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;
}
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;
}
0
SONNY
8 / 8 / 0
Регистрация: 30.05.2009
Сообщений: 47
07.11.2009, 16:44 #5
А зачем в вектор засовывать?Есть какой-то скрытый смысл?
0
Андрейка
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;
}
0
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
07.11.2009, 17:38 #7
Зачем вообще делать reverse и copy, если можно сразу распечатать массив указателей s задом наперед?
0
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
07.11.2009, 17:41 #8
Gravity, ну ему наверно нужно чтобы сам порядок слов изменился а от того что по массиву ходить с начала в конец или с конца в начало он что изменится?
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.11.2009, 17:52 #9
А что нам мешает сделать конкатенацию в обратном порядке?
0
Min_Fin
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 9
08.11.2009, 08:05  [ТС] #10
Спасибо. Разобрался...Просто напечал массив с конца.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2009, 08:05
Привет! Вот еще темы с ответами:

Объединить 2 подстроки - C++
Объединить 2 подстроки

Удаление подстроки (С) - C++
Ребят кто может помочь с удаление подстроки в строке, может у когото код завалялся. Строка: Пальцы его мнут и мнут глину. Удалить: &quot;и...

Поиск подстроки - C++
Привет всем. Я пишу программу для поиска подстроки. Если подстрока есть в строке, вывести YES. Иначе - NO. Вот код(еще не дописанный) ...

Поиск подстроки - C++
Эта программа написана чтобы искало буквы....а как написать чтобы искало количество слова например &quot; kag &quot; #include&lt;iostream.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.11.2009, 08:05
Ответ Создать тему
Опции темы

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