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

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

Войти
Регистрация
Восстановить пароль
 
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
#1

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

26.01.2012, 17:35. Просмотров 989. Ответов 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)     //в цикле дописать слова
                    {
                        
                    }
                    
                             //дописать конец строки. (результат буду сохранять в файле. каждая строка - должна быть новой строкой в файле, то есть в конце строки должен быть знак перехода на новую строку. как его дописать -ХЗ
            }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2012, 17:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена слов в строке (C++):

Замена слов в строке - C++
Программа берет данные из файла. Далее должна заменять Все слова н1 на н2. Однако получается только для первого найденного слова. ...

Замена слов в строке - C++
Собственно, сама задача: С клавиатуры вводится некоторый текст. Потом вводится слово(1) которое нужно заменить и слово(2) на которое...

Замена слов в строке - C++
Помогите с заданием. Дана строка символов S. Каждое второе слово в строке заменить символ тире. Код, который не работает(( ...

Замена слов в строке - C++
Можно ли как-то в строке например Заменить все слова &quot;много&quot;, как это сделать ?

Удаление и замена слов в строке - C++
Здравствуйте! Помогите, пожалуйста написать программу! Дана последовательность строк. Каждая строка состоит из слов, разделенных...

Замена слов в строке на другое слово - C++
Не могу понять в чём ошибка, вроде бы всё логично, но при работе программа выдаёт 3 ошибки и не выполняется(то есть слова я ввожу и всё) ...

1
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");
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2012, 17:41
Привет! Вот еще темы с ответами:

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

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

В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд). - C++
В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).

Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение. - C++
Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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