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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 88, средняя оценка - 4.90
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
#1

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

25.01.2010, 19:42. Просмотров 14269. Ответов 15
Метки нет (Все метки)

Здравствуйте, а можете помочь написать программу на С++, оч нужно, пожалуйста))
Задание: Пользователь вводит строку символов, вывести слова в обратном порядке. Например:
Пользователь ввел: "Привет программистам", тогда результат должен быть: "программистам Привет".
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2010, 19:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести слова в обратном порядке (C++):

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

Вывести слова в обратном порядке - C++
Привет всем. Я студент, помогите пожалуйста написать программу: дана строка состоящая из 30 слов между словами пробел и запятая вывести на...

Вывести слова в строке в обратном порядке - C++
#include "stdafx.h" #include<iostream> #include<conio.h> #include<string> #include <fstream> using namespace std; int...

Строки, вывести слова в обратном порядке - C++
Подскажите,как вывести слова в обратном порядке? Вот код, что нужно исправить { char str1; char str2=", "; cout<<"Enter...

Вывести слова в строке в обратном порядке - C++
Привет всем. Помогите пожалуйста ! Дана строка состоящая из 30 слов между словами пробел и запятая вывести на экран слова в обратном порядке

Вывести строку, содержащую слова исходной строки, но в обратном порядке - C++
Помогите доработать задачу, пожалуйста. #include <iostream> #include <string> using namespace std; int main() { string...

15
оренбуржец
5 / 5 / 0
Регистрация: 12.12.2009
Сообщений: 56
25.01.2010, 20:01 #2
с помощью строк все легко и просто делается.
P.S. код писать не буду. идею подкинул
0
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;
}
0
mirso
525 / 343 / 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;
0
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;
}
}
0
mirso
525 / 343 / 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;
}
//================================================
или это не строка?
0
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;
}
0
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
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;
}
0
Rififi
2359 / 1052 / 44
Регистрация: 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;
}
0
mirso
525 / 343 / 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 Посмотреть сообщение
я знаю как вывести все буквы в обратном порядке,
0
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
26.01.2010, 19:20  [ТС] #11
У меня в программе меняются местами первое и последнее слова, а вы мне не поможите переделать так, чтобы все слова выводились в обратном порядке, а то я не оч пойму как это сделать программно, пожалуйста, очень надо)
0
mirso
525 / 343 / 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;            
    }
}
3
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
26.01.2010, 22:07  [ТС] #13
Спасибо вам большое прибольшое)))))) Вы мне очень помогли, спасибо)))))
0
$$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();
}
1
Vita7881
6 / 6 / 0
Регистрация: 07.10.2009
Сообщений: 156
22.11.2010, 18:56  [ТС] #15
спасибо=)
0
22.11.2010, 18:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2010, 18:56
Привет! Вот еще темы с ответами:

Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в обратном порядке - C++
Здравствуйте. можете прокомментировать эту программу? #include &quot;stdafx.h&quot; #include &lt;string&gt; #include &lt;iostream&gt; using...

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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