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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
ton4ik
2 / 2 / 0
Регистрация: 14.10.2009
Сообщений: 28
#1

добавление пробелов в строке - C++

25.11.2009, 18:49. Просмотров 1519. Ответов 7
Метки нет (Все метки)

здравствуйте!

Постановка задачи. Дан текст, состоящий из слов, которые раз-делены пробелами и знаками препинания: точкой, запятой, точкой с запятой, тире, двоеточием, кавычками, вопросительным знаком, восклицательным знаком, круглыми скобками. Реализовать операцию обработки текста. Добавить пробелы перед открывающей и после закрываю-щей круглыми скобками, если они там отсутствуют.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
void main()
{
char S[80];
char S1[2]=" (", S2[2]=") ";
int i;
cin.getline(S,80);
while(S[i]!=0)
 {
 if (S[i]=='(')
//здесь я думал может стркатом строчки сложить, но их надо в новую строку с большим количеством элеметнов и я вообщемто запутлася, как строоку увеличивать когда пробелы добавляются?
         }
cout<<S;
 getch();
 }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2009, 18:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос добавление пробелов в строке (C++):

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

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

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

Удаление пробелов в строке - C++
вот такая задача надо что бы программа удаляла первый и последний пробел в строке. строку вводим мы сами. я вот написал что бы удаляла все...

Посчитать количество пробелов в строке - C++
Посчитать количество пробелов в строке

Удаление пробелов в введенной строке - C++
Вот я думаю надо так,но не получается //Удаление пробелов в строке #include&lt;iostream&gt; #include&lt;cstring&gt; #define N 80 using...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
25.11.2009, 20:04 #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
#include <iostream.h>
#include <string>
 
 
int main()
{
    string s="",buf;
 
    cout << "Enter string: ";   getline(cin, buf);
    
    buf="*"+buf+"*";
 
    for (int i=1; i<buf.length()-1; i++)
    {
        switch (buf[i])
        {
            case '(':   if(buf[i-1]!=' ')   { s+=" (";  break; }
            case ')':   if(buf[i+1]!=' ') { s+=") ";  break; }
            default:        s+=buf[i];
        } // end    switch  
    }
 
    cout<<"str: "<<s<<endl;
    return 0;
}
1
ton4ik
2 / 2 / 0
Регистрация: 14.10.2009
Сообщений: 28
25.11.2009, 20:58  [ТС] #3
спасибо, но почемуто эта програмка не выводит на экран измененную строку.
а я вот как то так хотел сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
void main()
{
char S[80];
int i,j,x;
cin.getline(S,80);
while(S[i]!=0)
 {
 if (S[i]=='(')
   for (j=i+1;j>i;j++)
   { S[i]=x;
    S[i]=S[i+1];
    S[i+1]=x;}
    S[i]=' ';       }
for (i=0;i<80;i++)
cout<<S[i];
 getch();
 }
то есть когда скобочка, то мы сдвигаем все эелемнты после скобочки на одну позицию вместе со скобкой а на ее место ставим пробел, ну и точно также другую сторону но я не дописал, но что даже эта часть не работает. какие тут естьошибочки?

Добавлено через 36 минут
ребята помогите!
0
easybudda
Модератор
Эксперт CЭксперт С++
9624 / 5572 / 947
Регистрация: 25.07.2009
Сообщений: 10,705
26.11.2009, 00:50 #4
Цитата Сообщение от ton4ik Посмотреть сообщение
почемуто эта програмка не выводит на экран измененную строку.
Вот та же программа от TanT, отформатировал только так, чтоб самому понятнее было... Всё прекрасно работает, и строка выводится...
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
#include <iostream>
using std::cin; 
using std::cout;
using std::endl;
#include <string>
using std::string;
 
 
int main(){
    string s="", buf;
 
    cout << "Enter string: ";       
    getline(cin, buf);
        
    buf = "*" + buf + "*";
 
    for ( int i = 1; i < buf.length()-1; i++ ){
        switch (buf[i]){
            case '(':   if ( buf[i-1] != ' ' ){ 
                            s += " (";  
                            break;
                        } 
            case ')':   if ( buf[i+1]!=' ' ){     
                            s += ") ";  
                            break; 
                        }
            default:    s+=buf[i];
        } // end        switch  
    }
 
    cout << "str: " << s << endl;
    return 0;
}
добавление пробелов в строке
0
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
26.11.2009, 05:52 #5
Цитата Сообщение от easybudda Посмотреть сообщение
Вот та же программа от TanT, отформатировал только так, чтоб самому понятнее было...
вопрос: а что было не понятно по оформлению?
на будующее учесть

ton4ik, ошибок море во всех разбираться времени не хватит вот первое что бросилось в глаза
ты i вообще не инициализировал, а везде используешь
ну и этот цикл будет вечный если i >=0 for (j=i+1;j>i;j++)
0
easybudda
Модератор
Эксперт CЭксперт С++
9624 / 5572 / 947
Регистрация: 25.07.2009
Сообщений: 10,705
26.11.2009, 11:02 #6
Цитата Сообщение от TanT Посмотреть сообщение
а что было не понятно по оформлению?
на будующее учесть
Ну я привык скобки/отступы по-своему расставлять - так нагляднее (кстати, тут оно всё равно немного сбилось) ну и это хозяйство
C++
1
2
3
4
5
6
#include <iostream>
using std::cin; 
using std::cout;
using std::endl;
#include <string>
using std::string;
сделал, как в книжке написано...
0
ton4ik
2 / 2 / 0
Регистрация: 14.10.2009
Сообщений: 28
01.12.2009, 01:05  [ТС] #7
всем спасибо за овтеты, но т к я еще на первом курсе, а работать с функциями нас не учили еще, можно написать тоже самое не используя их? и вместо стринга использовать чар..
вприцнипе я только не понимаю как сделать вот перемещение на один символ: из "такого" сделать " такого" то есть с пробелом. если кто знает как помогите..
0
ton4ik
2 / 2 / 0
Регистрация: 14.10.2009
Сообщений: 28
02.12.2009, 01:43  [ТС] #8
ребята!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2009, 01:43
Привет! Вот еще темы с ответами:

ворпос по поводу пробелов в строке - C++
А как мне в своем коде изменить чтобы вместо «_» при наборе предложения можно ставить пробелы, пытаюсь вводить через консоль с пробелами:...

Подсчитать количество пробелов в строке - C++
Подсчитать количество пробелов в строке Через массив #include &lt;iostream&gt; using namespace std; int main() { char str; ...

Определить количество пробелов в строке - C++
Написать програму при помощи библиотеки String.h Дана строка S1.....Sn (n за ранее не известно) нужно: 1)определить количество пробелов...

Подсчитать количество пробелов в строке - C++
Подсчитать количество пробелов в строке. Добавлено через 3 минуты Я знаю что тут нужно будет пользоваться !isdigit чтобы не считало...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.12.2009, 01:43
Ответ Создать тему
Опции темы

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