Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
1

Поменять каждые два соседних слова в строке местами

09.06.2010, 23:10. Показов 5794. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
прога должна менять каждые 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <fstream>
#include <iostream>
#include<clocale>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    char m [500];
int n,g;
      ifstream in("input.txt");
      char t;
    
       if(in.is_open()==false)
      {
            cout << "file open error!";
            return 1;
      }
 
 
 int i=0;
 int j=0;
 char c[20];
 char f[20];
 char s[500];
      while(in.get(t))
      {
            m[i]=t;
            i++;n=i;
              }
 
      for(i=0; i<=n-1; i++)
      {
  if(m[i]!=' ')
   c[i]=m[i];
  else 
     
  for(j=i+1; j<=n-1; j++)
  {
      if (m[j]!=' ')
      f[j]=m[j];
  }
  i=j;
      for (j=0; j<=n-1; j++)
          cout<<f[j];
          cout<<c[j];
          s[j]=f[j];
     }
 
 
 
  
      cin.get();
}
Добавлено через 23 минуты
подскажите хоть чно нибудь до утра должен прогу сделать
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2010, 23:10
Ответы с готовыми решениями:

Строки. В тексте поменять местами каждые два соседних слова
Есть задание: нужно считать текст и вывести его на экран, поменяв местами каждые два соседних...

Считать текст из файла и вывести его на экран, меняя местами каждые два соседних слова
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые...

Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова
Ребят, помогите пожалуста програмку написать, мне завтра для зачета надо....я нехрена не знаю(((...

Написать программу,которая считывает текст из файла и выводит его на экран,меняя местами каждые два соседних слова.
Написать программу,которая считывает текст из файла и выводит его на экран,меняя местами каждые два...

22
37 / 37 / 2
Регистрация: 13.05.2010
Сообщений: 81
09.06.2010, 23:20 2
те переписать (блоки готовые есть) или в твоей разбираться?
1
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
09.06.2010, 23:30  [ТС] 3
лутше в моей, а вообще как получится.
0
37 / 37 / 2
Регистрация: 13.05.2010
Сообщений: 81
10.06.2010, 00:58 4
местами менять только в строке или весь текст,? если во всём тексте , считая текст как одну строку, то посколько слов выводить?
1
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
10.06.2010, 01:20  [ТС] 5
менять местами весь текст. обратно нужно вывести переставленый текст
ввели:
aaaa ssss dddd ffff
vvv ddd fff rrrr
вывели:
ssss aaaa ffff dddd
ddd vvv rrrr fff

вот мое задание
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова.
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
10.06.2010, 01:41 6
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
#include "stdafx.h"
#include <string.h>
#include  <iostream>
using namespace std;
 
int main ()
{
    char str[] = "aaaa ssss dddd ffff";
    char * first, *second;
    char *fin = new char [strlen(str)];
    cout<<"start string:  "<<str;
    first = strtok (str, " ");
    second = strtok(NULL, " ");
    strcpy(fin,second);
    strcat(fin," ");
    strcat(fin,first);
    while (second!=NULL)
    {   
        first = strtok (NULL, " ");
        if (first==NULL)
        {   
            cout<<"\n The finish  string is:\n "<<fin<<endl;
            system("pause");
            return 0;
        }
                       strcat(fin," ");
        second = strtok(NULL," ");
        if (second==NULL)
        {
            strcat(fin,first);
            cout<<"\nThe number of words are not even, but the finish  string is\n"<< fin<<endl;
            system("pause");
            return 0;
        }
        strcat(fin,second);
        strcat(fin," ");
        strcat(fin,first);
    
     }
            cout<<"\n The finish  string is:\n "<<fin<<endl;
    system("pause");
    return 0;
    
}

вот набросал хотя брал не из файла, а просто массив букв.

также неясно как поступать, если слов нечетное количество... я просто последнее дописывал в конце.
1
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
10.06.2010, 01:51  [ТС] 7
я попробовал выдало ошибку
fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory


я заменил 'stdafx.h' на <stdafx.h> и на <stdafx> но всеравно ошибка.
чтобы с файла читало переделаю эт не тяжело.
0
38 / 38 / 10
Регистрация: 02.06.2010
Сообщений: 105
10.06.2010, 02:10 8
#include "stdafx.h" - это хедер из MSVC++. если у вас не вижуал, просто удалите строку)
0
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
10.06.2010, 02:39  [ТС] 9
я уже исправил спасибо)
но не могу сделать чтобы с файла читал 71 ошибку выдает;
что то не верно изменяю

Добавлено через 18 минут
я добавил вот такой кусочек
C++
1
2
3
4
5
6
7
ifstream in("input.txt");
***** char str;
***** if(in.is_open()==false)
***** {
*********** cout << "file open error!";
*********** return 1;
***** }while(in.get(str))
ну и еще пару строк
но все ошибки выдает сдесь, ошибки для каждой строчки часто повторяются

Добавлено через 6 минут
вот такие ошибки выдает:
error C3872: '0xa0': this character is not allowed in an identifier
error C2144: syntax error : 'char' should be preceded by ';'
error C2133: 'str' : unknown size
fatal error C1903: unable to recover from previous error(s); stopping compilation
error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::get(_Elem &)' : cannot convert parameter 1 from 'char []' to 'char &'
и они постоянно повторяються
что я мог сделать не так??
0
37 / 37 / 2
Регистрация: 13.05.2010
Сообщений: 81
10.06.2010, 02:43 10
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
#include <fstream>
#include <iostream>
//#include<clocale>
using namespace std;
 
int main()
{
        //setlocale(LC_ALL, "rus");
        char m [500];
int n;
      ifstream in("input.txt");
      char t;
        
       if(in.is_open()==false)
      {
            cout << "file open error!";
            return 1;
      }
 int i=0, nach1=0, nach2=0, cc=0;
 int j=0, kon1=0, kon2=0;
 char c[40];
 char f[20];
 
 
      while(in.get(t))
      {
            m[i]=t; cout<<t;
                        i++;n=i;
                        if (t==' ' || t=='\n') cc++;
                        
            
              }
      cout<<cc<<endl;
      
      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];}
 
 
              
     
cin.get();
 return 0;}
лови работает,,,

Добавлено через 1 минуту
твой вариант
1
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
10.06.2010, 02:43  [ТС] 11
огромное тебе спасибо !!!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12466 / 7489 / 1756
Регистрация: 25.07.2009
Сообщений: 13,780
10.06.2010, 02:48 12
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
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
 
int main(){
    const char * fileName = "input.txt";
    std::string buf, a, b;
    std::ifstream ifs(fileName);
    if ( ! ifs.is_open() ){
        std::cerr << "Can't open input file!" << std::endl;
        return 1;
    }
    while ( std::getline(ifs, buf) ){
        std::istringstream ist(buf);
        while ( ist.good() ){
            if ( ist >> a ){
                if ( ist >> b )
                    std::cout << b << " ";
                std::cout << a << " ";
            }
        }
        std::cout << std::endl;
    }
    
    ifs.close();
    return 0;
}
0
37 / 37 / 2
Регистрация: 13.05.2010
Сообщений: 81
10.06.2010, 02:54 13
easybudda, там нужно ещё слово со след строки цеплять (если в строке нечетное кол-во слов)
0
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
10.06.2010, 02:55  [ТС] 14
программа работает хорошо только не меняет местами 2 последних слова
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12466 / 7489 / 1756
Регистрация: 25.07.2009
Сообщений: 13,780
10.06.2010, 03:01 15
edd, да вроде в задании ничего про это не сказано... Нет у слова соседнего - так и менять ничего не нужно...

Цитата Сообщение от //Александр Посмотреть сообщение
программа работает хорошо только не меняет местами 2 последних слова
Чья именно? Вам их несколько написали.
Поменять каждые два соседних слова в строке местами
0
37 / 37 / 2
Регистрация: 13.05.2010
Сообщений: 81
10.06.2010, 03:04 16
//Александр, у меня всё меняет в любых вариантах, проверь что бы в конце строк не было пробелов после слов
0
easybudda
10.06.2010, 03:06
  #17

Не по теме:

edd, таки

Цитата Сообщение от edd Посмотреть сообщение
всё меняет в любых вариантах
или
Цитата Сообщение от edd Посмотреть сообщение
что бы в конце строк не было пробелов после слов
? ;)

0
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
10.06.2010, 03:07  [ТС] 18
я неправельно протестил обе правельно работаю только одна с консоли другая с файла
Благодадю вас за помощь
0
37 / 37 / 2
Регистрация: 13.05.2010
Сообщений: 81
10.06.2010, 03:11 19
easybudda, согласен криво прочитал, значит зря ковырял, но работает как и писал со след строкой

Добавлено через 3 минуты
Цитата Сообщение от easybudda Посмотреть сообщение

Не по теме:

edd, таки

или

? ;)

енто подправить три сек, код готовый есть, только и так пока чужой исходник перелопатил, прога в кучу строк получилась, да и смысла нет с них этого не требуют)))
1
6 / 6 / 2
Регистрация: 15.04.2010
Сообщений: 151
10.06.2010, 03:14  [ТС] 20
edd Вот что получается
Миниатюры
Поменять каждые два соседних слова в строке местами  
0
10.06.2010, 03:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2010, 03:14
Помогаю со студенческими работами здесь

Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова
Вот исходный код: #include &lt;fstream&gt; #include &lt;iostream&gt; //#include&lt;clocale&gt; using namespace...

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

Поменять в строке местами два слова (Паскаль -> C++)
var s : string; i, j, k : word; f : boolean; function isSpace(ch : char) : boolean;...

Поменять местами каждые два соседних слова в файле
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru