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

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

Войти
Регистрация
Восстановить пароль
 
HenryDukart
122 / 122 / 35
Регистрация: 05.10.2013
Сообщений: 455
Завершенные тесты: 2
#1

Переворот слов в строке char - C++

11.11.2013, 21:08. Просмотров 517. Ответов 14
Метки нет (Все метки)

Из строки со словами, разделенными одним или несколькими пробелами, получить новую строку с перевернутыми словами. (из "мама мыла раму" получить "амам алым умар"). Вот моя наработка. Выделе слова и перевернул их. Помогите,пожалуйста, с последующими шагами. Или наставьте на верный путь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
    char str[256], *slova[256], cstr[256], *p;
    int i(0);
    cin.get (str, 255);
    cin.ignore();
    strcpy(cstr, str);
    p=strtok(str, " ");
    while (p)
    {
        slova[i]=p;
        strrev (slova[i++]);
        p=strtok(NULL, " ");
    }
    system ("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 21:08     Переворот слов в строке char
Посмотрите здесь:

C++ Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение.
C++ В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
Cтрока: Определить количество средних слов в строке и какое из слов начинается на большую по коду букву C++
C++ Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
Переворот слов C++
Количество слов в заданной строке (для каждого из слов) C++
Непонятные символы в строке из char C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 21:31     Переворот слов в строке char #2
HenryDukart, It's dangerous to go alone. Take this.
Кликните здесь для просмотра всего текста

В функции turnString передаешь два указателя: исходная строка и строка куда нужно перевертыш записать. Еще передаешь размер.
main.cpp
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>
using namespace std;
 
void turnString(char* baseSt, char* pointSt, int size){
    for(int i=0;i<size;i++){
        pointSt[i]=baseSt[size-i-1];
    }
}
void show(char* a,int size){
    for(int i=0;i<size;i++){
        cout<<a[i];
    }
    cout<<endl;
}
int main(){
    char* baseString;
    int stSize=0;
    baseString=new char[stSize];
    baseString="Yoba, eto ty?";
    stSize=strlen(baseString);
    show(baseString,stSize);
    char* pointString;
    pointString=new char[stSize];
    turnString(baseString,pointString,stSize);
    show(pointString,stSize);
    system("pause");
    return 0;
}
HenryDukart
122 / 122 / 35
Регистрация: 05.10.2013
Сообщений: 455
Завершенные тесты: 2
11.11.2013, 21:48  [ТС]     Переворот слов в строке char #3
SMYH, YOBY NET, ETO EGO MAMA, CHTO EMU PEREDAT?
Нет, ваша функция переворачивает строку (для этого есть strrev). Мне надо, чтобы были перевернуты все слова, чтобы они остались на своих местах и сохранилось количество пробелов между ними. За старания, конечно, спасибо.
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
11.11.2013, 22:08     Переворот слов в строке char #4
Хм, заинтересовала меня ваша задачка, я отпишусь позже с отчетом.
SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 22:35     Переворот слов в строке char #5
HenryDukart, готово, парень
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
using namespace std;
int main (){
    char str[] ="TI UIDESH, TAK I NE UZNAV, CHTO YOBA ETO TI";
    char *pch;
    char point[256]="";
    printf ("Turning words in string:\"%s\"\n",str);
    pch=strtok (str," ,.-");
    while (pch != NULL){
        char *tmp=new char[strlen(pch)];
        strcpy(tmp,pch);
        strrev(tmp);
        strcat(point,tmp);
        strcat(point," ");
        pch = strtok (NULL, " ,.-:?");
    }
    printf("%s\n",point);
    system("pause");
    return 0;
}
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
11.11.2013, 22:45     Переворот слов в строке char #6
Цитата Сообщение от SMYH Посмотреть сообщение
HenryDukart, готово, парень
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
using namespace std;
int main (){
    char str[] ="TI UIDESH, TAK I NE UZNAV, CHTO YOBA ETO TI";
    char *pch;
    char point[256]="";
    printf ("Turning words in string:\"%s\"\n",str);
    pch=strtok (str," ,.-");
    while (pch != NULL){
        char *tmp=new char[strlen(pch)];
        strcpy(tmp,pch);
        strrev(tmp);
        strcat(point,tmp);
        strcat(point," ");
        pch = strtok (NULL, " ,.-:?");
    }
    printf("%s\n",point);
    system("pause");
    return 0;
}
Код работать не будет - нет заголовка одного :3

Добавлено через 55 секунд
Подключил заголовок, код выдал правильный результат, сейчас еще потестим.
SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 22:58     Переворот слов в строке char #7
Anton_Kretov, какого заголовка?
Croessmah
Модератор
Эксперт CЭксперт С++
12878 / 7264 / 810
Регистрация: 27.09.2012
Сообщений: 17,945
Записей в блоге: 2
Завершенные тесты: 1
11.11.2013, 23:01     Переворот слов в строке char #8
Цитата Сообщение от SMYH Посмотреть сообщение
какого заголовка?
<cstdlib>
SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 23:02     Переворот слов в строке char #9
Croessmah, А зачем он? Я же вроде никаких функций из него не использовал
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
11.11.2013, 23:04     Переворот слов в строке char #10
Цитата Сообщение от SMYH Посмотреть сообщение
Croessmah, А зачем он? Я же вроде никаких функций из него не использовал
http://www.cplusplus.com/reference/cstdio/printf/
SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 23:05     Переворот слов в строке char #11
Anton_Kretov, ну да, я уже загуглил и понял. Но почему у меня код работал без подключения этого заголовка. Студия "сама" подключила?
Croessmah
Модератор
Эксперт CЭксперт С++
12878 / 7264 / 810
Регистрация: 27.09.2012
Сообщений: 17,945
Записей в блоге: 2
Завершенные тесты: 1
11.11.2013, 23:11     Переворот слов в строке char #12
Цитата Сообщение от SMYH Посмотреть сообщение
А зачем он? Я же вроде никаких функций из него не использовал
C++
1
system ( "pause" ) ;
Добавлено через 58 секунд
Цитата Сообщение от SMYH Посмотреть сообщение
Студия "сама" подключила
угу. Поэтому при переносе на другой компилятор могут повыбегать ошибки

Добавлено через 2 минуты
C++
1
2
3
    int stSize=0;
    baseString=new char[stSize];//0???
    baseString="Yoba, eto ty?";//утечка памяти
Добавлено через 1 минуту
C++
1
char *tmp=new char[strlen(pch)];//потом нет освобождения памяти - утечка
HenryDukart
122 / 122 / 35
Регистрация: 05.10.2013
Сообщений: 455
Завершенные тесты: 2
11.11.2013, 23:12  [ТС]     Переворот слов в строке char #13
SMYH, уже тепло. Но ведь количество пробелов-то не сохраняется.
Croessmah
Модератор
Эксперт CЭксперт С++
12878 / 7264 / 810
Регистрация: 27.09.2012
Сообщений: 17,945
Записей в блоге: 2
Завершенные тесты: 1
11.11.2013, 23:13     Переворот слов в строке char #14
Цитата Сообщение от HenryDukart Посмотреть сообщение
Но ведь количество пробелов-то не сохраняется.
Программа для переставления символов
Кликните здесь для просмотра всего текста
C++
1
#include <cctype>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2013, 23:18     Переворот слов в строке char
Еще ссылки по теме:

Ввести символьную строку. Выполнить переворот каждого слова в строке C++
Сортировка слов в char по алфавиту C++
Переворот слов C++
C++ функция возвращает массив слов, содержащихся в текстовом сообщении char* Words(char *s)
C++ Преобразование слов из string в тип char внутри цикла

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

Или воспользуйтесь поиском по форуму:
SMYH
2 / 2 / 0
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 23:18     Переворот слов в строке char #15
HenryDukart, в задании было сказано "подсчитать количество пробелов"? Ты об этом ничего не сказал.
Yandex
Объявления
11.11.2013, 23:18     Переворот слов в строке char
Ответ Создать тему
Опции темы

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