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

Замена слов в строке - C++

Восстановить пароль Регистрация
 
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
26.01.2012, 17:35     Замена слов в строке #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
void f(char *s)
{
    
    int len=strlen(s);
    int na4slovo1=0,konezslovo1=0,na4slovo2=0,konezslovo2=0,kolslov=0;
    for(int k=0;k<len;k++)
    {
        if(s[k]==' ' && s[k+1]!=' ')    //нашли количество слов
            kolslov++;
    }
    if(kolslov>2)
    {
        int l=0;
        kolslov/=2;
            for(int k=0;k<len;k++)
            {
                if(s[k]!=' ' && k!=len-1 && s[k+1]==' ')l++;        //текущее слово++
                if(s[k]!=' ' && k!=len-1 && s[k+1]==' '&& konezslovo1==0)//конец первого слова
                {
                    konezslovo1=k+1;
                }
                if(s[k]==' '&& kolslov==l && s[k+1]!=' ')//начало второго - если текущее слово - центральное
                    na4slovo2=k+1;
                if(k>na4slovo2 && s[k+1]==' '&& na4slovo2!=0)//конец второго 
                {
                    konezslovo2=k+1;
                    break;
                }
            }                                  //и так: у нас есть уже координаты первого и среднего слова, 
//теперь нужно: поместить в новую строку все слова, но: среднее и первое поменять местами.
 
        }
}
Добавлено через 20 часов 53 минуты
Помогите закончить,пожалуйста разбил всю строку на слова и поместил их в массив слов х. теперь необходимо обнулить строку s и в нее внести слова в порядке: srslovo,1,2,3,4,5,6....0,.....n-1,n и установить конец строки, подскажите как это сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void f(char *s)
{
    {
                char *x[512]={0};
                char *p=strtok(s, " ");
                int i=0;
                while(p)
                {
                    x[i++]=p;
                    p = strtok(NULL, " ");
                }
                int srslovo=i/2;
                strcpy(s,"");//очистил
                                                //здесь надо к пустой строке добавить слово x[srslovo]
                i=1;
                   while(x[i]!=0)     //в цикле дописать слова
                    {
                        
                    }
                    
                             //дописать конец строки. (результат буду сохранять в файле. каждая строка - должна быть новой строкой в файле, то есть в конце строки должен быть знак перехода на новую строку. как его дописать -ХЗ
            }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2012, 17:35     Замена слов в строке
Посмотрите здесь:

Замена слов в строке C++
C++ Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение.
C++ В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
Замена слов в строке C++
Cтрока: Определить количество средних слов в строке и какое из слов начинается на большую по коду букву C++
C++ Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
Количество слов в заданной строке (для каждого из слов) C++
Замена слов в строке на другое слово C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
27.01.2012, 17:41  [ТС]     Замена слов в строке #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
55
56
57
58
59
60
61
62
63
64
void f(char *s)
{
    {
    char *x[512]={0};
    char *p=strtok(s, " ");
    char* t=new char[512];
    int i=0;
    while(p)
    {
        x[i++]=p;
        p=strtok(NULL," ");
    }
    if(i>2)
        {
            int srslovo=i/2;
            t[0]='\0';
            strcat(t,x[srslovo]);
            strcat(t," ");
            i=1;
               while(x[i]!=0)
                {
                    if(i==srslovo)  strcat(t,x[0]);
                    else            strcat(t,x[i]); 
                    strcat(t," ");
                    i++;
               }
               strcpy(s,t);
               delete t;
               s[strlen(s)-1]='\n';
        }
}
}
 
 
int main()
{
    fstream fs;
    long pos=0;
    string str;
    char *s=new char[512];
    fs.open("file.txt");
    if(fs.is_open())                    //Если удачно открыли
    {
        while(fs.good())
        {
            fs.getline(s,512);
            f(s);
            pos=fs.tellg();
            pos=pos-strlen(s)-1;
            fs.seekp(pos);
            fs<<s;
            cout<<s;
            fs.seekg(pos+strlen(s)+1);
        }
        cout<<"OK";
    }
else
    {
        cout<<"Error. File can not be opened\n";
    }
    fs.close();
    delete fs;
system("pause");
}
Yandex
Объявления
27.01.2012, 17:41     Замена слов в строке
Ответ Создать тему
Опции темы

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