Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/68: Рейтинг темы: голосов - 68, средняя оценка - 4.88
45 / 45 / 3
Регистрация: 19.11.2009
Сообщений: 362
1

Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела.

26.04.2010, 00:03. Просмотров 13290. Ответов 11
Метки нет (Все метки)

Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела.

Как сделать так, чтоб между точкой и следующим символом ставился пробел, а не заменял следующий символ.
Например:
Введите строку==>123.456
123. 56
...................
Желаемый результат:
123. 456

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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include <windows.h>
#pragma stroka
 //---------------------------------------------------------------------------
using namespace std;
 
 char bufRus[256];
 char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;}
 
int main()
{const int n=100;
 int i;
 char s[n];
cout<< Rus("Введите строку==>");
cin.getline (s,n);
 for(i=0;i<n;i++){
  if (s[i]=='.' && s[i+1]!=' ') s[i+1]=' ';}
std::cout<< std::endl << s << std::endl;
      system("pause");
      return 0;
}
//---------------------------------------------------------------------------
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2010, 00:03
Ответы с готовыми решениями:

Строка: Вставить после каждого символа точки (.) один символ пробела ("_"), если после точки нет пробела.
Вставить после каждого символа точки (.) один символ пробела (&quot;_&quot;), если после точки нет пробела.

Вставить пробел в строку после каждого символа «.» «,» «!» или «?», если за этими символами не следует пробел
Вставить пробел после каждого символа «.» «,» «!» или «?», если за этими символами не следует...

Дана строка, содержащая 60 символов. После каждого пятого символа вставить символ пробела. Напечатать результат
Дана строка, содержащая 60 символов. После каждого пятого символа вставить символ пробела....

Дана строка, содержащая 60 символов. После каждого пятого символа вставить символ пробела. Напечатать результат
Дана строка, содержащая 60 символов. После каждого пятого символа вставить символ пробела....

11
4 / 4 / 2
Регистрация: 02.04.2010
Сообщений: 22
26.04.2010, 00:09 2
существует также стандартная функция, которая все это делает)))

char *strtok(char *s1, const char *s2); // возв-т Ук на слово в s1 и исполь-
// зуется для выделения слов в s1. Разделителем слов является любой из сим-
// волов в s2. При первом вызове strtok() помещает в s1 NULL на место первого
// символа, совпадающего с одним из знаков в s2. При повторных вызовах strtok
// в качестве ее первого параметра нужно указывать NULL

другими словами: вводишь строку сразделителями в твоем случае с точками, и создаешь массив куда записывашь разелители(точку) и передаешь массив и строку в фун strtok
1
45 / 45 / 3
Регистрация: 19.11.2009
Сообщений: 362
26.04.2010, 00:17  [ТС] 3
C++
1
2
3
s1='.';
s2=' ';
strtok(s1,s2);
Так что ли?
0
4 / 4 / 2
Регистрация: 02.04.2010
Сообщений: 22
26.04.2010, 00:25 4
C++
1
2
3
4
5
6
char a[размер]=".";
char s[размер];
 
gets(s); //ввод строки
 
s2=strtok(s, r); // полечение обработанной строки
0
45 / 45 / 3
Регистрация: 19.11.2009
Сообщений: 362
04.05.2010, 11:48  [ТС] 5
Цитата Сообщение от Trigun Посмотреть сообщение
C++
1
s2=strtok(s, r);
Что за r?

Не работает!!!
Добавлено через 42 минуты
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include <windows.h>
#include <string.h>
#pragma stroka
//---------------------------------------------------------------------------
using namespace std;
 
 char bufRus[256];
 char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;}
 
int main()
{const int n=30;
 int i;
 char s[n];
 int s2
 char s2[n];
 char str[n]=".";
cout<< Rus("Введите строку==>");
cin.getline (s,n);
s2=strtok(s,str);
cout<< endl <<s2;
      system("pause");
      return 0;
}
//---------------------------------------------------------------------------
Не работает!!!
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
04.05.2010, 12:20 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    const int n=30;
    char string[n];
    char *s1 = NULL, *s2 = NULL;
    cout << "Input string: ";
    cin.getline (string, n);
 
    s1 = strtok (string, ".");
    s2 = strtok (NULL, ".");
    if (s1 && s2)
        cout << "Output string: " << s1 << ". " << s2 << endl;
    else
        cout << "Bad string";
 
    system("pause");
    return 0;
}
Добавлено через 6 минут
немного доработал
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
int main()
{
    const int n=30;
    char string[n];
    char output[n] = "\0";
    char *s1 = NULL, *s2 = NULL;
    cout << "Input string: ";
    cin.getline (string, n);
 
    s1 = strtok (string, ".");
    s2 = strtok (NULL, ".");
    if (s1 && s2)
    {
        strcat (output, s1);
        strcat (output, ". ");
        strcat (output, s2);
        cout << "Output string: "  << output;
    }
    else
    {
        cout << "Bad string";
    }
    return 0;
}
1
45 / 45 / 3
Регистрация: 19.11.2009
Сообщений: 362
04.05.2010, 12:37  [ТС] 7
Цитата Сообщение от Roma_F Посмотреть сообщение
NULL
Это чо ф-ция 0_о
0
45 / 45 / 3
Регистрация: 19.11.2009
Сообщений: 362
05.05.2010, 17:48  [ТС] 8
В С++ есть функция удаления символа?
Я нашел в книге такую
C++
1
DELETE(s1,s2)
Удаляет из строки s1 все символы встречающиеся в строке s2.
Но она у меня не работает.
0
4 / 4 / 2
Регистрация: 02.04.2010
Сообщений: 22
05.05.2010, 18:44 9
я работаю в среде ВС 3.1 дык вот там нет такой функции в библиотеке string.h
где ты ее нашел
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
05.05.2010, 19:51 10
Цитата Сообщение от Jony Wocker Посмотреть сообщение
С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    string s1 = "Remastered elefant";
    string s2 = "elefant", s3 = "dog";
 
    s1.erase(2, 7);
    int i = s1.find(s2);
    if (i != string::npos)
    {
        s1.erase(i, s2.length());
        s1.insert(i, s3);
    }
    else 
    {
        cout << "Substring not found";
    }
 
    cout << s1;
    return 0;
}
0
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
05.05.2010, 20:38 11
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
//MS VS
#include "stdafx.h"
#include <iostream>
#include <string>
 
std::string insert_space_after_dot(std::string ss)
{
    size_t dot_pos = -1;
    for(;;)
    {
        dot_pos = ss.find('.', ++dot_pos);
        if(dot_pos == std::string::npos) break;
        ss.replace(dot_pos, 1, ". ");
    }
    return ss;
}
 
int _tmain(int argc, _TCHAR* argv[])
{   
    std::string s;
    for(;;)
    {
        std::cout << "Input string: ";
        std::cin >> s;
        std::cout 
            << "result: "
            << insert_space_after_dot(s)
            << std::endl
            << std::endl;
 
    }
    return 0;
}
0
One_Genius
13.12.2011, 02:38 12
Понимаю что всремени много прошло с тех пор как тут решали,но сам искал и потом додумался до такого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
 
int main()
{  char str[1000],*s;
int i,j;
cout<<"vvedite tekst"<<endl;
gets(str);
s=strtok(str,".");
while(s!=NULL){
cout<<s<<". ";
s=strtok(NULL,".");
}
 
    return 0;
}
Добавлено через 48 секунд
Сам недавно начал осваивать Си,так что не ругайте)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2011, 02:38

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В заданном тексте после каждого знака препинания («.», «,», «:», «;») вставить пробел, если его там нет.
В заданном тексте после каждого знака препинания («.», «,», «:», «;») вставить пробел, если его там...

Преобразовать данный текст по следующему правилу: если нет символа «*», то оставить текст без изменений, иначе вставить перед и после каждого символа
Преобразовать данный текст по следующему правилу: если нет символа «*», то оставить текст без...

Вставить пробел после каждого символа в .txt
Добрый день, всем! Есть задача форматирования .txt: вставить пробел после каждого символа. Как это...

Вставить пробел после каждого заданного символа
Вставить пробел после каждого символа &quot;.&quot; &quot;,&quot; &quot;!&quot; или &quot;?&quot;, если за этими символами не следует...


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

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

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