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

Поменять местами соседние слова в тексте - C++

Восстановить пароль Регистрация
 
ArtAlex777
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 50
01.03.2014, 13:09     Поменять местами соседние слова в тексте #1
Написать программу, которая считывает текст из файла и выводит его в другой файл и на экран, меняя местами каждые два соседних слова.

Можно ли как-нибудь сократить или по-другому сделать??? И нужно добавить "выводит его в другой файл"

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "stdafx.h"
#include <fstream>
#include <iostream>
 
using namespace std;
 
char m [500];
 int i=0, nach1=0, nach2=0, cc=0;
 int j=0, kon1=0, kon2=0;
 char c[40];
 char f[20];
 int n;
 char t;
   
   void output(char t)
   {
          for (int c1=0 ;c1<cc/2; c1++){
 
          for(i=nach1; i<=n; i++){
                  if (m[i]=='\n') {kon1=i-1; break;}
                        if(m[i]!=' ') c[i-nach1]=m[i];
                        else {kon1=i-1; break;}}
nach2=i+1;                              
 
for(j=nach2; j<=n; j++){
        if (m[j]=='\n') {kon2=j-1; break;}
        if (m[j]!=' ') f[j-nach2]=m[j];
        else {kon2=j-1; break;}}
           
for (int i=0; i<= (kon2-nach2); i++)
                  cout<<f[i];
                                        cout<<m[kon1+1];
for (int i=0; i<= (kon1-nach1); i++)
                  cout<<c[i];
                                        cout<<m[kon2+1];
                                        nach1=j+1;}
          if((cc%2)!=0) {for (int i=kon2+2; i<n; i++) cout<<m[i];}
 
}
   
int main()
{
        //setlocale(LC_ALL, "rus");
        
 
      ifstream in("input.txt");
    
        
       if(in.is_open()==false)
      {
            cout << "file open error!";
            return 1;
      }
 
 
 
      while(in.get(t))
      {
            m[i]=t; cout<<t;
                        i++;n=i;
                                         if (t==' ' || t=='\n') cc++;
                                                
                        
              }
          cout<<endl;
          output(t);
         
        
              
     
cin.get();
 return 0;}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
01.03.2014, 14:46     Поменять местами соседние слова в тексте #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
int main()
{
        //setlocale(LC_ALL, "rus");
       ifstream in("input.txt");
       if(!in.is_open())
      {
            cout << "input file open error!";
            system("pause");
            return 1;
      }
       ofstream out("out.txt");
       if(!out.is_open())
      {
            cout << "output file open error!";
            system("pause");
            return 1;
      }
      do
      {
          char s1[100],s2[100];
          in>>s1;
          in>>s2;
          cout<<s2<<' '<<s1<<' ';
          out<<s2<<' '<<s1<<' ';
      }while(!in.eof());
      system("pause");
      return 0;
 }
ArtAlex777
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 50
01.03.2014, 18:14  [ТС]     Поменять местами соседние слова в тексте #3
можете прокомментировать программу?

Добавлено через 1 час 16 минут
можно сделать, чтобы выводились слова до перестановки и после перестановки??
и,пожалуйста, прокоммунтируйте программу
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
01.03.2014, 18:37     Поменять местами соседние слова в тексте #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
do
      {
          char s1[100],s2[100];
          in>>s1; // вводим первое слово
          in>>s2;// вводим второе слово
          cout<<s2<<' '<<s1<<' ';// выводим наоборот, сначала второе слово, а потом первое 
// пробелы надо вставлять, т.к. они теряются при вводе.
          out<<s2<<' '<<s1<<' ';
      }while(!in.eof());
К сожалению, теряются концы строк.
Подумайте, как их восстановить!
Yandex
Объявления
01.03.2014, 18:37     Поменять местами соседние слова в тексте
Ответ Создать тему
Опции темы

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