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

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

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

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

06.06.2013, 21:03. Просмотров 852. Ответов 5
Метки нет (Все метки)

Составить программу, в которой с клавиатуры вводится строка символов и отредактировать предложение, удаляя из него лишние пробелы оставляя только по одному пробелу между словами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 21:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отредактировать предложение, удаляя из него лишние пробелы (C++):

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

Отредактировать заданное предложение, удаляя из него те слова, которые уже встречались в предложении раньше - C++
Помогите, пожалуйста! Отредактировать заданное предложение, удаляя из него те слова, которые уже встречались в предложении раньше. ...

Отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными номерами - C++
Вобщем совсем недавно начал изучать С++. Изучение начал сразу после паскаля, поэтому в голове каша и ничего непонятно. Задача звучит...

Отредактировать текст, удаляя лишние символы пробелов между словами - C++
Отредактировать текст,удаляя лишние символы пробелов между словами;по нажатию произвольной клавиши выделить первое предложение текста.

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

Отредактировать текст, удалив лишние пробелы и оставив только по одному пробелу - C++
Помогите пожалуйста написать программу .В исходном предложении поставить произвольное число пробелов между словами. Отредактировать текст,...

5
dickivs
46 / 46 / 6
Регистрация: 25.11.2011
Сообщений: 273
Завершенные тесты: 1
06.06.2013, 21:39 #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
#include <iostream> 
using std::cout; 
using std::endl; 
 
#include <string> 
using std::string; 
int main() 
{ 
    string string1( "The values in any left subtree" 
                    "\nare less than the value in the" 
                    "\nparent node and the values in" 
                    "\nany right subtree are greater" 
                    "\nthan the value in the parent node" ); 
 
    cout << "Original string: \n" << string1 << endl << endl; 
 
    // удалить все символы начиная с позиции 62(включительно) 
    //до конца stringl 
    string1.erase( 62 ); 
 
    // вывести новую строку 
    cout << "Original string after erase:\n" << string1 
         << "\n\nAfter first replacement:\n"; 
 
    int position = string1.find( " " ); // найти первый пробел 
 
    // заменить все пробелы точками 
    while ( position != string::npos ) 
    { 
        string1.replace( position, 1, "." ); 
        position = string1.find( " ", position + 1 ); 
    } 
     
    cout << string1 << endl;
return 0; 
}
1
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
06.06.2013, 21:45 #3
C++
1
2
3
4
5
6
7
8
void Trim_SD(char * dest, char * source){
    for(char *p1=source,*p2=dest; (*p2=*p1);++p1,++p2){
        if(*p1!=' ') continue;
        for(;*p1==' ';++p1);
            p2+=(p2==dest || !(*p1))?0:1;
            *p2=*p1;
    }
}
2
UranFlex
131 / 129 / 21
Регистрация: 25.05.2013
Сообщений: 233
06.06.2013, 22:38 #4
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)  );
}
1
MrGluck
Модератор
Эксперт CЭксперт С++
7496 / 4612 / 694
Регистрация: 29.11.2010
Сообщений: 12,626
06.06.2013, 23:14 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <fstream>
#include <sstream>
#include <string>
 
using namespace std;
 
int main()
{
    ifstream ifs("input.txt");
    if (!ifs)
        return 1;
    ofstream o("output.txt");
    string str; // временная переменная для хранения слова
    while (!ifs.eof() && getline(ifs, str))
    {
        istringstream ist(str); // инициализируем строкой
        string word;
        while (ist >> word)
            o << word << " ";
        o << endl;
    }
}
Добавлено через 35 минут
Croessmah, можно даже так:
C++
1
p2 += (p2 != dest && *p1);
1
Croessmah
06.06.2013, 23:21     Отредактировать предложение, удаляя из него лишние пробелы
  #6

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Croessmah, можно даже так:
код написан во времена, когда я не ведал о таких вещах с тех пор его не переделывал

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2013, 23:21
Привет! Вот еще темы с ответами:

Отредактировать текст,удаляя из него слова,которые встречаются в предложении заданное число раз - C++
Осталось пара заданий в практике,сам не могу разобраться как сделать,времени совсем нету,прощу помочь. 1 Отредактировать текст,удаляя из...

Лишние пробелы - C++
Здравствуйте. Выполняю задание на microsoft visual studio. Необходимо удалить лишние пробелы в строке, используя массив и нельзя...

Отредактировать заданное предложение... - C++
Отредактировать заданное предложение удаляя из него все слова с нечетными номерами и переворачивая слова с четными номерами. Помогите...

Удалить лишние пробелы - C++
Вводится строка произвольного текста. Вывести на экран второе слово(слова разделены пробелами) Программа работает, но нужно при вводе...


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

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

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