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

Вывести слова в обратном порядке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 88, средняя оценка - 4.90
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
25.01.2010, 19:42     Вывести слова в обратном порядке #1
Здравствуйте, а можете помочь написать программу на С++, оч нужно, пожалуйста))
Задание: Пользователь вводит строку символов, вывести слова в обратном порядке. Например:
Пользователь ввел: "Привет программистам", тогда результат должен быть: "программистам Привет".
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
оренбуржец
5 / 5 / 0
Регистрация: 12.12.2009
Сообщений: 56
25.01.2010, 20:01     Вывести слова в обратном порядке #2
с помощью строк все легко и просто делается.
P.S. код писать не буду. идею подкинул
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
25.01.2010, 20:11  [ТС]     Вывести слова в обратном порядке #3
я знаю как вывести все буквы в обратном порядке, а вот чтубы сами слова, не знаю, не подскажите?
Вод функция, которая выводит быквы в обратной послед, не поможете сделать чтобы слова в обратной послед, например: "примет всем", результат: "всем привет"

Добавлено через 24 секунды
C
1
2
3
4
5
6
7
8
9
10
void reversit(char s [])
{
int len = strlen(s); //найти длину строки
for(int j = 0;j <len/2;j++) //поменять все
//символы из первой половины
{
char temp = s [j]; //на символы
s [j] = s [len-j-1]; //из второй половины
s [len-j-1] = temp;
}
mirso
523 / 341 / 17
Регистрация: 05.04.2009
Сообщений: 709
25.01.2010, 20:17     Вывести слова в обратном порядке #4
Vita7881,
вотак
C++
1
2
3
4
5
std::string a, b;
 
    std::cin  >> a >> b;
        system ( "CLS" );
    std::cout << b << ' ' << a << std::endl;
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
25.01.2010, 20:29  [ТС]     Вывести слова в обратном порядке #5
по заданию надо ввести одну строку, а из нее уже вывести слова в обратном порядке

Добавлено через 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
//reverstr.cpp
//переворачивает строку
#include <iostream>
#include <string> //для strlen()
#include <locale>
 
using namespace std;
 
 
int main()
{
setlocale(LC_ALL,"rus"); // локализация
 
// объявление функции revrsit
void reversit(char []);
 
const int MAX = 80; //размер массива
char str [MAX]; //строка
cout << "\nВведите строку: "; //получить строку от
cin.get(str,MAX);
reversit(str); //перевернуть строку
cout <<"Перевернутая строка: "; //и вывести ее
cout <<str <<endl;
system("PAUSE");
return 0;
}
//---------------------------------------------------------
//reversit()
//функция, переворачивающая строку, переданную в аргументе
void reversit(char s [])
{
int len = strlen(s); //найти длину строки
for(int j = 0;j <len/2;j++) //поменять все
//символы из первой половины
{
char temp = s [j]; //на символы
s [j] = s [len-j-1]; //из второй половины
s [len-j-1] = temp;
}
}
mirso
523 / 341 / 17
Регистрация: 05.04.2009
Сообщений: 709
25.01.2010, 20:29     Вывести слова в обратном порядке #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
//=================================================
int main()
{
std::string a, b;
 
    std::cin  >> a >> b;
        system ( "CLS" );
    std::cout << b << ' ' << a << std::endl;
 
system( "pause" );
return EXIT_SUCCESS;
}
//================================================
или это не строка?
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
25.01.2010, 22:31  [ТС]     Вывести слова в обратном порядке #7
так тут вы же вводите а и в, а у мене надо одну строку, а в ней переставить слова, например есть char s []

Добавлено через 1 час 51 минуту
Есть программа, она правильно работает, но когда вводишь более трех слов в строке, она не правильно выдает слова в обрвтном порядке, а для трех работает, не могу понять в чем ошибка, не могли бы вы мне помочь, оч надо

Добавлено через 13 секунд
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
//#include "stdio.h"
#include "iostream"
#include "conio.h"
using namespace std;
int main()
{
    char st[50],*f,*l;
    char res[50];
//---------------------------------------------------------
    cout<<"Vvedite stroky- ";
    cin.getline(st,50);//vvod
    int lee;
    lee=strlen(st); //obwaj dlina orig. stroki 
//---------------------------------------------------------
    int lf=0;
    f=strchr(st,' ');//naxogdenie dlinu
    lf=strlen(f);//    pervogo slova
    lf=lee-lf;//lenght of first word; (obwaj dlina-pos prevogo probela)
//----------------------------------------------------------
    int ll=0;
    l=strrchr(st,' ');//naxogdenie dlinu
    ll=strlen(l)-1;//    poslednego slova
//-------------komponovka-----------------------
    int i=0;                     
    for (i=0;i<ll;i++)           //zapisuvaem v rezyltizyuwyu stroky
        res[i]=st[(lee-ll)+i];   //poslednee slovo (lee-ll) eto
    res[i]=0;                    //indeks na4ala poslednego slova
//-----------------------------------------------
    int j=0;// zdes zapisuvaem slova serediny stroki
    for(i=strlen(res),j=lf;j<lee-ll;i++,j++)
        res[i]=st[j];
    res[i]=0;
    //cout<<"\n\nOUT- "<<res;
//--------------------------
    for(i=strlen(res),j=0;j<lf;j++,i++)
        res[i]=st[j]; // eto zapis pervogo slova 
    res[i]=0;         // v konec rezylt. stroki
    cout<<"\n\nRezult- "<<res;
_getch();
return 0;
}
Андрейка
410 / 214 / 24
Регистрация: 25.03.2009
Сообщений: 716
25.01.2010, 23:43     Вывести слова в обратном порядке #8
Vita7881,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <string>
 
int main()
{
    std::istream_iterator <std::string> _ITER(std::cin);
    std::istream_iterator <std::string> _ITER2;
 
    std::vector <std::string> _VEC(_ITER, _ITER2);
 
    std::ostream_iterator <std::string> _ITER3(std::cout," ");
    std::copy(_VEC.rbegin(), _VEC.rend(), _ITER3);
 
    return 0;
}
Rififi
 Аватар для Rififi
2330 / 1045 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
26.01.2010, 00:14     Вывести слова в обратном порядке #9
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
#include <vector>
#include <string>
#include <iostream>
#include <locale>
 
int main()
{
        setlocale(LC_ALL, "");
 
        std::string text;
        std::getline(std::cin, text);
        std::stringstream ss(text);
 
        typedef std::vector<std::string> V;
        V v;
 
        std::string s;
        while (ss >> s)
                v.push_back(s);
 
        V::const_reverse_iterator w = v.rbegin();
        for (; w != v.rend(); ++w)
                std::cout << *w << std::endl;
 
        return 0;
}
mirso
523 / 341 / 17
Регистрация: 05.04.2009
Сообщений: 709
26.01.2010, 14:47     Вывести слова в обратном порядке #10
Цитата Сообщение от Vita7881 Посмотреть сообщение
так тут вы же вводите а и в, а у мене надо одну строку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>  
 
int main()
{
    std::string s = " abc 1234 defgh 567890 ";  
     
    for ( size_t i = s.length() - 1, j = 0; i > 0 ; --i, ++j )
    if ( s[j] == ' ' ) 
    { 
        std::string t ( s.begin(), s.begin() + j );
        s.erase  ( 0, j );
        s.insert ( i, t );  
        j = 0;
    }
    std::cout << s << std::endl;
    
return 0;
}
Цитата Сообщение от Vita7881 Посмотреть сообщение
например есть char s []
если тебе дали задание именно с char[], и
Цитата Сообщение от Vita7881 Посмотреть сообщение
я знаю как вывести все буквы в обратном порядке,
вот и переверни всю строку, а потом ищи индексы начала и конца каждого слова, и
Цитата Сообщение от Vita7881 Посмотреть сообщение
я знаю как вывести все буквы в обратном порядке,
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
26.01.2010, 19:20  [ТС]     Вывести слова в обратном порядке #11
У меня в программе меняются местами первое и последнее слова, а вы мне не поможите переделать так, чтобы все слова выводились в обратном порядке, а то я не оч пойму как это сделать программно, пожалуйста, очень надо)
mirso
523 / 341 / 17
Регистрация: 05.04.2009
Сообщений: 709
26.01.2010, 21:22     Вывести слова в обратном порядке #12
Цитата Сообщение от Vita7881 Посмотреть сообщение
в обратном порядке
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
void reversit ( char *s )
{
    size_t len = strlen(s);
    
    for ( size_t i = 0; i < len/2; i++ ) 
    {
        char temp = s [i];
        s[i] = s [len-i-1]; 
        s [len-i-1] = temp;        
    }
    //--------------------------------------------- 
    for ( size_t i = 0, j = 0; i <= len; ++i, ++j ) 
    if ( s[i] == ' ' || s[i] == '\0' )
    {  
        for ( size_t t = 0; t < j/2; ++t )
        {
            char temp = s [i - t - 1]; 
            s [i - t - 1] = s[i - j + t];
            s [i - j + t] = temp;
        }           
        ++i;
        j = 0;            
    }
}
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
26.01.2010, 22:07  [ТС]     Вывести слова в обратном порядке #13
Спасибо вам большое прибольшое)))))) Вы мне очень помогли, спасибо)))))
$$RaMpAgE
 Аватар для $$RaMpAgE
1 / 1 / 0
Регистрация: 04.10.2010
Сообщений: 17
21.11.2010, 21:32     Вывести слова в обратном порядке #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream.h>
#include <string.h>
void main()
{
char text[80], text1[80];
char *p;
int i;
cin.getline(text,80);
strrev(text);
char *pr= " .,";
text1[0]='\0';
p= strtok(text,pr);
while (p!=NULL)
{
strrev(p);
strcat(text1,p);
strcat(text1," ");
p= strtok(NULL,pr);
}
cout<<text1<<endl;
cin.get();
}
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
22.11.2010, 18:56  [ТС]     Вывести слова в обратном порядке #15
спасибо=)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2015, 11:35     Вывести слова в обратном порядке
Еще ссылки по теме:

C++ вывести слова - анаграммы из словаря, состоящего из пар слов(при чтении в обратном порядке образуется другое слово)
C++ Вывести строку, содержащую эти же слова, но расположенные в обратном порядке. Записать полученную строку в другой файл
Вывести слова в обратном порядке C++

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

Или воспользуйтесь поиском по форуму:
evrial
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 1
29.08.2015, 11:35     Вывести слова в обратном порядке #16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "iostream"
#include <string>
 
using namespace std;
 
void main()
{
    string a;
    cout<<"type string"<<endl;
    cin>>a;
    for (int b=a.length()-1; b>=0; b--)
        cout<<a[b];
    cin.get();
    cin.get();
}
Yandex
Объявления
29.08.2015, 11:35     Вывести слова в обратном порядке
Ответ Создать тему
Опции темы

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