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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.97
Jony Wocker
45 / 45 / 2
Регистрация: 19.11.2009
Сообщений: 362
26.04.2010, 00:03     Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела. #1
Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела.

Как сделать так, чтоб между точкой и следующим символом ставился пробел, а не заменял следующий символ.
Например:
Введите строку==>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;
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2010, 00:03     Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела.
Посмотрите здесь:

Разработать рекурсивную функцию, которая после каждого вхождения символа a в строку s добавляет символ b C++
C++ Заменить в тексте каждую точку многоточием, если после точки есть пробел
C++ Строка вводится с клавиатуры. В данной строке вставить пробел после каждого символа
После первой буквы каждого слова вставить символ “-” C++
C++ Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Trigun
4 / 4 / 0
Регистрация: 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
Jony Wocker
45 / 45 / 2
Регистрация: 19.11.2009
Сообщений: 362
26.04.2010, 00:17  [ТС]     Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела. #3
C++
1
2
3
s1='.';
s2=' ';
strtok(s1,s2);
Так что ли?
Trigun
4 / 4 / 0
Регистрация: 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); // полечение обработанной строки
Jony Wocker
45 / 45 / 2
Регистрация: 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;
}
//---------------------------------------------------------------------------
Не работает!!!
Roma_F
331 / 246 / 5
Регистрация: 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;
}
Jony Wocker
45 / 45 / 2
Регистрация: 19.11.2009
Сообщений: 362
04.05.2010, 12:37  [ТС]     Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела. #7
Цитата Сообщение от Roma_F Посмотреть сообщение
NULL
Это чо ф-ция 0_о
Jony Wocker
45 / 45 / 2
Регистрация: 19.11.2009
Сообщений: 362
05.05.2010, 17:48  [ТС]     Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела. #8
В С++ есть функция удаления символа?
Я нашел в книге такую
C++
1
DELETE(s1,s2)
Удаляет из строки s1 все символы встречающиеся в строке s2.
Но она у меня не работает.
Trigun
4 / 4 / 0
Регистрация: 02.04.2010
Сообщений: 22
05.05.2010, 18:44     Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела. #9
я работаю в среде ВС 3.1 дык вот там нет такой функции в библиотеке string.h
где ты ее нашел
Roma_F
331 / 246 / 5
Регистрация: 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;
}
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,667
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2011, 02:38     Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела.
Еще ссылки по теме:

Даны строка S, символ C и строка S0. Необходимо после каждого вхождения символа C в строку S вставить строку S0 C++
Дан символ С и строки S, S0. После каждого вхождения символа С в строку S вставить S0 C++
C++ Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел

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

Или воспользуйтесь поиском по форуму:
One_Genius
Сообщений: n/a
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 секунд
Сам недавно начал осваивать Си,так что не ругайте)
Yandex
Объявления
13.12.2011, 02:38     Вставить после каждого символа «.» один символ « » (пробел), если после точки нет пробела.
Ответ Создать тему
Опции темы

Текущее время: 21:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru