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

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

Войти
Регистрация
Восстановить пароль
 
cubeman9
0 / 0 / 0
Регистрация: 10.01.2012
Сообщений: 8
#1

Работа со строками. Смена слов с строке. - C++

13.02.2012, 19:53. Просмотров 523. Ответов 1
Метки нет (Все метки)

Помогите написать функцию, которая будет менять местами первые два слова в каждой строке массива. Слова разделяются одним и более пробелами.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2012, 19:53     Работа со строками. Смена слов с строке.
Посмотрите здесь:

Работа со строками C++
C++ Работа со строками. Подсчет количества слов в предложениях и т.д
C++ Работа со строками. Определить количество пробелов в строке и вывести на экран
Работа со строками (sting.h) (печатать первые буквы слов в порядке убывания частоты их употребления) C++
C++ Смена слов в файле
Работа с строками: подсчитать количество слов, количество букв C++
C++ Работа со строками
Работа со строками C++
Определить количество слов, начинающихся с гласных букв (работа со строками) C++
C++ Работа со строками. Как вывести последнее слово палиндром в моей строке?
C++ Робота со строками. Удалить символы в строке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
remarkes
300 / 223 / 13
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
13.02.2012, 22:00     Работа со строками. Смена слов с строке. #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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//~ Помогите написать функцию,
//~ которая будет менять местами первые два слова в каждой строке массива.
//~ Слова разделяются одним и более пробелами. 
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
#define MAX_WORD 256
 
int read_word(int , char [], char []);
int exchange_words(char []);
 
int main()
{
        // текстовый массив
    char text[]="first second   third\nfirst2  second2  third3\nfirst3   second3 third";
        // старое значение текстового массива
    printf("old text: \n%s", text);
        // наша крутейшая функция
    exchange_words(text);
        // новое значение текстового массива
    printf("\n\nnew text:\n%s", text);
    return 0;
}
 
//~ читаем слово
int read_word(int i, char text[], char return_word[]) {
 
    //~ объявляем счетчик для слова
    int i_word=0;
    
    while (text[i] != ' ' && text[i] != '\n') {
        return_word[i_word]=text[i];
        i++;
        i_word++; 
    }
    return_word[i_word]='\0';
    return i;
}
 
//~ меняем слова в текстовом массиве text
int exchange_words(char text[])
{
    int i=0; // счетчик текста text
    int j=0; // счетчик для записи новых слов в text
    int i_new_line=0; // счетчик новой строки
    int words_len=0;  // длина двух слов без пробелов
    int spaces=0;     // количество пробелов
 
    //~ сюда запишем слова
    char first[MAX_WORD];       // первое
    char second[MAX_WORD];      // второе
    char buffer[MAX_WORD];  // буфер
 
    while (i <= strlen(text)) {
        //~ если начало текста или новая строка
        if (i == 0 || text[i-1] == '\n') {
            i_new_line=i;
            //~ читаем первое слово
            i=read_word(i, text, first);
            while (text[i] == ' ') {
                i++;
            }
            //~ читаем второе слово
            i=read_word(i, text, second);
 
            words_len = strlen(first) + strlen(second);
            spaces = i - i_new_line - words_len;
 
            words_len += spaces;
 
            //~ записываем слова в буфер
            strcpy(buffer, second);
            for (j=0; j < spaces; j++)
                strcat(buffer, " ");
            strcat(buffer, first);
            
            //~ записываем из буфера в text
            for (j=i_new_line; j<words_len; j++) {
                text[j]=buffer[j];
            }
        }
        i++;
    }
    
    return 0;
}
Yandex
Объявления
13.02.2012, 22:00     Работа со строками. Смена слов с строке.
Ответ Создать тему
Опции темы

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