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

Строки. В тексте поменять местами каждые два соседних слова - C++

Восстановить пароль Регистрация
 
SimpleSystem
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 7
26.04.2014, 15:33     Строки. В тексте поменять местами каждые два соседних слова #1
Есть задание: нужно считать текст и вывести его на экран, поменяв местами каждые два соседних слова.
Есть готовый код:
 Комментарий модератора 
Тексты надо вставлять в тело сообщения


Проблема заключается в следующем:
эта программа ведет себя нормально только тогда, когда между словами есть только 1 пробел, а если больше, то пробелы будут меняться местами между собой, что мне не нужно.

Библиотеки:
C++
1
2
3
4
5
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
Помогите пожалуйста.

Добавлено через 17 минут
вот код
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
int main()
{
    string s1;
    string s[30];
    ifstream ifs("text.txt");
    int count = 0;
    while (getline(ifs, s1, ' '))
    {
        s[count] = s1;
        count++;
    }
    ifs.close();
    string temp;
    for (int i = 0; i<30; i += 2)
    {
        temp = s[i];
        s[i] = s[i + 1];
        s[i + 1] = temp;
    }
    for (int i = 0; i<30; i++)
    {
        cout << s[i] << " ";
    }
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 15:33     Строки. В тексте поменять местами каждые два соседних слова
Посмотрите здесь:

C++ Написать программу,которая считывает текст из файла и выводит его на экран,меняя местами каждые два соседних слова.
C++ Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова C++
В фразе поменять местами два слова C++
C++ поменять местами каждые два соседних слова.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RQdan
65 / 65 / 17
Регистрация: 26.10.2013
Сообщений: 198
26.04.2014, 15:52     Строки. В тексте поменять местами каждые два соседних слова #2
Цитата Сообщение от SimpleSystem Посмотреть сообщение
while (getline(ifs, s1, ' '))
{
s[count] = s1;
count++;
}
Сделайте проверку в цикле считывания на наличия пробела в итоговой строке.
C++
1
2
3
4
5
6
7
8
while (getline(ifs, s1, ' '))
{
if (s1<>' ')
{
s[count] = s1;
count++;
}
}
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,159
Завершенные тесты: 1
26.04.2014, 15:56     Строки. В тексте поменять местами каждые два соседних слова #3
C++
1
2
3
4
5
6
7
8
9
10
11
while (ifs>>s[count++] && count<30)
                ;
    ifs.close();
    string temp;
     count--;
    for (int i = 0; i<count; i += 2)
    {
        temp = s[i];
        s[i] = s[i + 1];
        s[i + 1] = temp;
    }
SimpleSystem
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 7
26.04.2014, 16:06  [ТС]     Строки. В тексте поменять местами каждые два соседних слова #4
Не меняет местами, просто выводит текст.
А когда делаю проверку выдает ошибку
error C2676: binary '==' : 'std::string' does not define this operator or a conversion to a type acceptable to the predefined operator
C++
1
2
3
4
5
6
7
8
while (getline(ifs, s1, ' '))
{
if (s1==' ')
{
s[count] = s1;
count++;
}
}
RQdan
65 / 65 / 17
Регистрация: 26.10.2013
Сообщений: 198
26.04.2014, 16:17     Строки. В тексте поменять местами каждые два соседних слова #5
Цитата Сообщение от SimpleSystem Посмотреть сообщение
А когда делаю проверку выдает ошибку
error C2676: binary '==' : 'std::string' does not define this operator or a conversion to a type acceptable to the predefined operator
Да, что-то я забыл о string'е.
C++
1
2
3
4
5
6
7
8
while (getline(ifs, s1, ' '))
{
if (s1[0]!=' ')
 {
 s[count] = s1;
 count++;
 }
}
Должно работать
SimpleSystem
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 7
26.04.2014, 16:25  [ТС]     Строки. В тексте поменять местами каждые два соседних слова #6
Все равно считывает и пробелы.
http://rghost.ru/54645930
Yandex
Объявления
26.04.2014, 16:25     Строки. В тексте поменять местами каждые два соседних слова
Ответ Создать тему
Опции темы

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