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

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

Войти
Регистрация
Восстановить пароль
 
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
#1

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

18.04.2014, 21:06. Просмотров 820. Ответов 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
27
28
29
30
31
32
33
34
#include "stdafx.h"
#include <iostream>
#include <cstring> 
#include <string>
#include <conio.h>
#include <fstream>
#include <stdio.h>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Rus");
    int i1 = 0;
    char s1[5000];
    ifstream fin1 ("F.txt");
    ofstream fout ("G.txt");
    
    string str;
    string instr;
    string outstr;
    while(!fin1.eof())
    {
        fin1 >> str;
        fout<<endl;
        if(str.size())
        {
        outstr = str + ' ' + outstr;
        fout<<outstr;
        } 
    }
    fin1.close();
    fout.close();
    cout<<"Изменение порядка строк произведено успешно!"<<endl;
    system("pause");
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2014, 21:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменение порядка слов в строке на обратный (C++):

Изменение порядка слов в строке на обратный - C++
НУЖНО ДО 23 00. ПОЖАЛУЙСТА СПАСАЙТЕ Добавлено через 2 минуты код нужен попроще

Изменение порядка элементов массива на обратный и ввести его в новый массив - C++
Нужно изменить порядок массива на обратный, ввести его в ново-созданный массив. Нужно написать код через void или int, не используя cout ...

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

Изменить порядок следования слов в строке на обратный - C++
Помогите, пожалуйста, написать функцию, которая изменяет порядок следования слов в строке на обратный

Дан массив из слов (в одной строке одно слово). Зашифровать текст, меняя порядок букв в словах на обратный - C++
помогите

Изменение порядка символов в строке s на противоположный - C++
Помогите, пожалуйста. Функция - Reverse(s). Назначение - изменение порядка символов в строке s на противоположный. При реализации...

9
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
18.04.2014, 21:16 #2
Считываешь слова, записываешь поочерёдно в массив, потом просматриваешь его с конца и получаешь всё в обратном порядке.
0
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
19.04.2014, 12:52  [ТС] #3
есть ещё вариант кода, но он тоже не работает

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
#include "stdafx.h"
#include <iostream>
#include <cstring> 
#include <string>
#include <conio.h>
#include <fstream>
#include <stdio.h>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Rus");
    int i1 = 0;
    char s1[5000];
    char **buffer;
    ifstream fin1 ("F.txt");
    ofstream fout ("G.txt");
    
    string str;
    string instr;
    string outstr;
    while(!fin1.eof())
    {
        fin1.getline(s1,500);
        //cout << sizeof(s1) << endl;
        while(strchr(s1,))
        for(int count = sizeof(s1); count > 0;count--)
        {
            fout << s1[count];
        }
        fout<<endl;
    }
    fin1.close();
    fout.close();
    cout<<"Изменение порядка строк произведено успешно!"<<endl;
}
0
IrineK
Заблокирован
19.04.2014, 13:02 #4
Цитата Сообщение от nmcf Посмотреть сообщение
записываешь поочерёдно в массив
Лучше в другой файл.

Добавлено через 2 минуты
avatar1870,
непонятно, что у вас является строкой.
В примере
Цитата Сообщение от avatar1870 Посмотреть сообщение
Исходный текст:
Создать новую
тему
две строки.

Тогда в ответе должно быть
новую Создать
тему

Вы же, похоже, считаете строкой весь текст.
Уточните этот момент.
0
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
19.04.2014, 13:35  [ТС] #5
Не могу понять, как это сделать. Можете помочь, а то сдавать(
0
IrineK
Заблокирован
19.04.2014, 13:37 #6
Цитата Сообщение от avatar1870 Посмотреть сообщение
как это сделать
Еще раз - ЧТО сделать?
1) переставить слова задом наперед во всем тексте
или
2) переставить слова задом наперед в каждой отдельной строке из текста
0
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
19.04.2014, 19:47  [ТС] #7
Исходный текст:

Нет ничего невозможного
Подписывайтесь на наш YouTube канал


На выходе:
невозможного ничего Нет
канал YouTube наш на Подписывайтесь
0
IrineK
Заблокирован
20.04.2014, 04:19 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Это называется:
переставить слова задом наперед в каждой отдельной строке из текста.

Добавлено через 46 минут
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
#include <iostream>
#include <sstream>
#include <fstream>
using namespace std;
 
int main()
{   ifstream ifs ("F.txt");
    ofstream ofs ("G.txt");
 
    if (!ifs.is_open() || !ofs.is_open())
    {   cout << "Error working with files";
        cin.get();
        return 1;
    }
 
    string buf;
    while (getline(ifs, buf))       //считываем строку
    {   istringstream iss (buf);    //скармливаем ее входному потоку
        string word, reverse;
        while (iss >> word)         //берем слова из входного потока (где лежит строка)
        {   reverse.insert(0, " ");     //сначала пробел
            reverse.insert(0, word);    //потом слово
        }
        reverse.resize (reverse.size() - 1); //сзади - один ненужный пробел
        ofs << reverse << '\n';     //отправляем готовую строку-перевертыш в файл результатов
    }
 
    ifs.close();
    ofs.close();
 
    cout << "Done";
 
    cin.get();
    return 0;
}
1
IrineK
Заблокирован
20.04.2014, 04:24 #9
Результат
1
Миниатюры
Изменение порядка слов в строке на обратный  
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 407
20.04.2014, 12:33  [ТС] #10
Спасибо вам огромное! Помогли очень сильно!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2014, 12:33
Привет! Вот еще темы с ответами:

Обратный порядок слов в предложении - C++
вобщем нужно, чтобы программа ставила слова в предложении в обратном порядке #include &lt;iostream&gt; #include &lt;string.h&gt; using...

Обратный порядок слов предложения - C++
11. Напечатать все слова предложения в обратном порядке. Входные данные – предложение, выходные данные – предложение с обратным ...

Изменить порядок слов на обратный - C++
Нужно заменить полученную строку на обратную. пример: &quot; Помогите мне пожалуйста&quot; -&gt; &quot;пожалуйста мне Помогите&quot; Сделать нужно с...

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


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

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

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