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

Отредактировать предложение, удаляя из него лишние пробелы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поставить строки в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread893801.html
Поставить строки в обратном порядке, используя двухмерный массив. Размер массива задается самостоятельно. Сделать три варианты программы. В первом элементы массива определяются в программе, во втором задаются пользователем, в третьем заполняются с помощью генератора случайных чисел. Исходный и конечный массивы вывести на экран.
C++ не удается релизовать свою функцию sort для шаблонного массива функция должна получать Array<T>::Iterator #ifndef SORT_H #define SORT_H #include <iostream> //#include <string> #include "Array.h" //using namespace std; http://www.cyberforum.ru/cpp-beginners/thread893795.html
C++ While. Правильно ли составлено условие?
У меня вопрос. правильно ли составлено условие. А то у меня такое чувство что оно не проверяется while ((stroka!=key_prob) || (stroka!='\0'))
Ряды Тейлора C++
Задача состоит в проведении программной реализации расчета приблизительного значения функции y, разложив функцию f (x) в ряд Тейлора, при этом необходимо вывести и применить рекуррентное отношение для расчета общей части для каждого слагаемого ряда или его части.Исходными параметрами задач является аргумент функции, изменяется в диапазоне с шагом Xdelta, и точность (допустимая погрешность)...
C++ Протабулировать функцию http://www.cyberforum.ru/cpp-beginners/thread893761.html
Протабулировать функцию, использовав цикл с предусловием. Аргументы и результаты вывести на экран в виде таблицы (для значений х, в которых функция не существует вывести "-" и использовать оператор перехода на следующую итерацию). Как это сделать ? Помогите, пожалуйста
C++ Увеличить каждый элемент массива на величину следующего элемента в массиве Доброго времени суток, помогите пожалуйста написать очень простую программу, задание указано в заголовке. Завтра надо на стипуху выходить, так что дерзайте подробнее

Показать сообщение отдельно
UranFlex
131 / 129 / 21
Регистрация: 25.05.2013
Сообщений: 233
06.06.2013, 22:38
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
//============================================================================
// Name        : exclude_unnecessary_spaces.cpp
// Author      : UranFlex
// Version     : 0.1 alpha
// Copyright   : GNU GPL
// Description : С клавиатуры вводится строка символов - отредактировать предложение,
//               удаляя из него лишние пробелы оставляя только по одному пробелу между словами.
//               C++, Ansi-style.
//============================================================================
 
#include <iostream>
#include <cstring>
using namespace std;
 
// функция удаляет все лишнии пробелы в строке
// лишними пробелами являются:
// 1) пробел вначале строки;
// 2) пробел в конце строки
// 3) все подряд идущие пробелы в строке, если их количество более 1 подряд
void ExcludeSpaces( string& str );
 
int main() {
 
    string str; // контейнер для хранения вводимой строки
 
    cout << "Введите строку" << endl;// запрашиваем у пользователя строку
    getline( cin, str ); // сохраняем ее
 
    ExcludeSpaces( str ); // чистим от лишних пробелов
 
    cout << str << endl; // выводим на экран
 
    return 0;
}
 
void ExcludeSpaces( string& str ){
 
    string::iterator iter = str.begin(); // позиционируем итератор на начало строки
 
    // в цикле перебираем все символы строки
    while ( iter != str.end() ){
        if ( !isspace( *iter ) ) // если очередной символ не пробел
            ++iter; // то переводим итератор на следующий символ
        else if ( isspace( *( iter + 1 ) ) ) // а если пробел и следующий за ним тоже пробел,
            // то удаляем текущий очередной символ
            // т.е. после удаления текущего символа следующий за ним пробел остается в строке
            // и итератор будет как раз на этот следующий пробел и указывать
            str.erase( iter );
        else ++iter; // а если это одиночный пробел, то переводим итератор на следующий символ
    }
 
    // после цикла между словами будет только по одному пробелу, но если были пробелы ( хоть один хоть много ) вначале и/или в конце строки,
    // то в этом месте останется по одному пробелу, ведь цикл удаляет только подряд идущие пробелы, оставляя только один пробел
 
    // соответственно проверяем вначале строки есть ли пробел
    if ( isspace( *str.begin() ) ) // если есть
        str.erase(  str.begin() );  // то удаляем его
 
    // то же самое и в конце строки
    if ( isspace( *(str.end() - 1 ) ) )
        str.erase(  (str.end() - 1)  );
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru