Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462

Переворот слов в строке char

11.11.2013, 21:08. Показов 2893. Ответов 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;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2013, 21:08
Ответы с готовыми решениями:

Найти количество слов стоящих из 5 символов в строке типа char
Помогите не получатся написать программу. Пример Ввод : 12345 Найти количество слов. Вывод : 2

Переворот слов в строке
Здесь функция для переворота всей строки: // функция переворота строки void StrRev(char* S) { int i, j, l; char t; l =...

Переворот строки: Несовместимость типов int и char
Есть простенькая программка с функцией reverse, которая изменяет порядок символов строки на обратный int main(int argc, char *argv) ...

14
 Аватар для SMYH
2 / 2 / 1
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 21:31
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;
}
0
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
11.11.2013, 21:48  [ТС]
SMYH, YOBY NET, ETO EGO MAMA, CHTO EMU PEREDAT?
Нет, ваша функция переворачивает строку (для этого есть strrev). Мне надо, чтобы были перевернуты все слова, чтобы они остались на своих местах и сохранилось количество пробелов между ними. За старания, конечно, спасибо.
1
 Аватар для Anton_Kretov
89 / 51 / 15
Регистрация: 26.06.2013
Сообщений: 179
11.11.2013, 22:08
Хм, заинтересовала меня ваша задачка, я отпишусь позже с отчетом.
0
 Аватар для SMYH
2 / 2 / 1
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 22:35
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;
}
1
 Аватар для Anton_Kretov
89 / 51 / 15
Регистрация: 26.06.2013
Сообщений: 179
11.11.2013, 22:45
Цитата Сообщение от 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 секунд
Подключил заголовок, код выдал правильный результат, сейчас еще потестим.
0
 Аватар для SMYH
2 / 2 / 1
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 22:58
Anton_Kretov, какого заголовка?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
11.11.2013, 23:01
Цитата Сообщение от SMYH Посмотреть сообщение
какого заголовка?
<cstdlib>
0
 Аватар для SMYH
2 / 2 / 1
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 23:02
Croessmah, А зачем он? Я же вроде никаких функций из него не использовал
0
 Аватар для Anton_Kretov
89 / 51 / 15
Регистрация: 26.06.2013
Сообщений: 179
11.11.2013, 23:04
Цитата Сообщение от SMYH Посмотреть сообщение
Croessmah, А зачем он? Я же вроде никаких функций из него не использовал
http://www.cplusplus.com/reference/cstdio/printf/
0
 Аватар для SMYH
2 / 2 / 1
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 23:05
Anton_Kretov, ну да, я уже загуглил и понял. Но почему у меня код работал без подключения этого заголовка. Студия "сама" подключила?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
11.11.2013, 23:11
Цитата Сообщение от 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)];//потом нет освобождения памяти - утечка
1
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
11.11.2013, 23:12  [ТС]
SMYH, уже тепло. Но ведь количество пробелов-то не сохраняется.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
11.11.2013, 23:13
Цитата Сообщение от HenryDukart Посмотреть сообщение
Но ведь количество пробелов-то не сохраняется.
Программа для переставления символов
Кликните здесь для просмотра всего текста
C++
1
#include <cctype>
0
 Аватар для SMYH
2 / 2 / 1
Регистрация: 23.10.2013
Сообщений: 38
11.11.2013, 23:18
HenryDukart, в задании было сказано "подсчитать количество пробелов"? Ты об этом ничего не сказал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2013, 23:18
Помогаю со студенческими работами здесь

Переворот слов
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;sstream&gt; int main() { std::string input; std::getline( std::cin,...

Переворот слов
Дали такие задания: Задание 1 В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово. Входные...

Переворот слов в тексте
Всем привет. Такая задача имеется: Каждое слово текста преобразовать таким обpазом,чтобы оно читалось слева направо. Всю задачу не требую )...

В строке, вводимой пользователем, определить сколько слов в строке, составить новое предложение из чётных слов
В строке вводимой пользователем, определить сколько слов в строке, составить новое предложение из чётных слов.

Java в текстовом файле подсчитать количество слов имеющих вторую букву char 1 и четвертую char2 ( char1 и char
heip


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru