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

Строка, слова в которой разделены пробелами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Смоделировать работу линейного рекуррентного регистра http://www.cyberforum.ru/cpp-beginners/thread536508.html
Здравствуйте! Кто знает как смоделировать работу ЛРР в С++?
C++ Типизированные файлы. Записать в файл последовательного доступа n натуральных чисел. Записать в файл последовательного доступа n натуральных чисел: a1, a2,..., an (числа получить с помощью датчика случайных чисел). Сформировать новый файл, элементами которого являются числа а1,... http://www.cyberforum.ru/cpp-beginners/thread536504.html
C++ Чтение файла неизвестного размера
Необходимо прочитать файл неизвестного размера, динамически растягивая массив, загнать файл в массив и узнать его размер. Приведите пожалуйста пример кода на Си или Си++. Я пробовал играться с...
C++ Запись и чтение в файл - символьный массив
Здравствуйте. Пишу программу , создаю символьный массив и хочу записать его в файл , записывает удачно , но при выводе на печать выдает что-то не понятное. #include<iostream> #include<fstream>...
C++ Произвести сортировку данного слова методом пузырька с использованием индекса. http://www.cyberforum.ru/cpp-beginners/thread536485.html
Сама сортировка методом обмена вот: #pragma hdrstop #include <iostream.h> #include <string.h> //--------------------------------------------------------------------------- ...
C++ Произвести слияние полученных массивов Само задание звучит так : Даны два одномерных целочисленных массива. Произвести поиск заданного значения в первом из них – методом последовательного перебора с использованием барьерного элемента, а... подробнее

Показать сообщение отдельно
bellinger
03.04.2012, 23:23
вот первые 3

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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <stdio.h>
#include <string.h>
 
void show_str(char* title, char* str);
char* max_word(char* str);
char* delete_spaces(char* str);
char* min_word(char* str);
char* delete_word(char* str, char* word);
 
int main(){
    char* s = new char[100];
    strcpy(s, "слова  в        строке    разделены    пробелами");
 
    show_str("Предложение:", s);
    show_str("Самое длинное слово:", max_word(s));
    show_str("Самое короткое слово:", min_word(s));
    show_str("Удаляем лишние пробелы: ", delete_spaces(s));
    show_str("Удаляем самое короткое слово пробелы: ", delete_word(s, min_word(s)));
 
 
    delete [] s;
}
 
//Функция поиска самого длинного слова в предложении
char* max_word(char* str){
 
    char* copy = new char[strlen(str + 1)];
    char* delim = new char[2];
    char* token;
    char* max_word = new char[strlen(str + 1)];
 
    strcpy(copy, str);
    strcpy(delim, " ");
 
    for(token = strtok(copy, delim);token != 0;token = strtok(0, delim)){
        if(strlen(token) >= strlen(max_word))//если нужно первое самое длинное то > если последнее самое длинное, то >=
            strcpy(max_word, token);
    }
 
    delete [] copy;
    delete [] delim;
 
    return max_word;
}
 
//Функция поиска самого короткого слова в предложении
char* min_word(char* str){
    char* copy = new char[strlen(str + 1)];
    char* delim = new char[2];
    char* token;
    char* min_word = new char[strlen(str + 1)];
 
    strcpy(copy, str);
    strcpy(delim, " ");
    strcpy(min_word, str);
 
    for(token = strtok(copy, delim);token != 0;token = strtok(0, delim)){
        if(strlen(token) <= strlen(min_word))//если нужно первое самое длинное то > если последнее самое длинное, то >=
            strcpy(min_word, token);
    }
 
    delete [] copy;
    delete [] delim;
 
    return min_word;
}
 
//Функция удаления слова из предложения
char* delete_word(char* str, char* word){
    char* copy = new char[strlen(str + 1)];
    char* delim = new char[2];
    char* token;
    char* new_str = new char[strlen(str + 1)];
 
    strcpy(copy, str);
    strcpy(delim, " ");
 
    for(token = strtok(copy, delim);token != 0;token = strtok(0, delim)){
        if(strcmp(token, word) == 0) continue;
 
        strcat(new_str, token);
 
        token = strtok(0, delim);
        if(!token)
            break;
        else{
            strcat(new_str, " ");
 
            if(strcmp(token, word) == 0) continue;
 
            strcat(new_str, token);
            strcat(new_str, " ");
        }
    }
 
    delete [] copy;
    delete [] delim;
 
    return new_str;
}
 
 
//Функция удаления лишних пробелов из предложения
char* delete_spaces(char* str){
    char* copy = new char[strlen(str + 1)];
    char* delim = new char[2];
    char* token;
 
    char* new_str = new char[strlen(str + 1)];
 
    strcpy(new_str, "");
    strcpy(copy, str);
    strcpy(delim, " ");
 
    for(token = strtok(copy, delim);token != 0;token = strtok(0, delim)){
        strcat(new_str, token);
 
        token = strtok(0, delim);
        if(!token)
            break;
        else{//не самый лучший вариант, но зато работает!
            strcat(new_str, " ");
            strcat(new_str, token);
            strcat(new_str, " ");
        }
 
    }
 
    delete [] copy;
    delete [] delim;
 
    return new_str;
}
 
//Функция вывода строки
void show_str(char* title, char* str){
    printf("%s\n\t%s\n",title, str);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru