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

замена символов в строках - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
No0b41k
 Аватар для No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
09.11.2010, 00:33     замена символов в строках #1
Доброй ночи форумчане.

Нужно разобраться очень срочно, в двух задачах программированию на С++ :

1. Дана строка (текст) - ввод которого производится с клавиатуры, от 1 символа до бесконечности. Если в строке (тексте) встречается 6-ти или 7-ми значное число, то записать эти числа через дефис (как номера телефонов), например: 75-33-18, 851-35-44. А если встречаются 10-ти или 9-ти значные числа - то первые три цифры взять в скобки а последующие записать как 6-ти или 7-ми значные числа (см. выше), например (053)55-18-35, (955)143-99-51.

2. Дана строка (текст) - ввод которого производится с клавиатуры, от 1 символа до бесконечности. Если встречаем в конце предложения точку, а следующее предложение начинается с большой буквы - то заменить точку на запятую, а большую букву на маленькую.

Благодарю заранее!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 00:33     замена символов в строках
Посмотрите здесь:

Замена слов в строках C++
Работа с файлом. посчитать количество символов в строках и отцентрировать C++
Подсчет количества символов разного вида на одинаковых позициях в разных строках C++
Определить номера символов в строках и сравнить их C++
C++ Подсчитать количество малобуквенных слов (менее четырех символов) во всех строках исходного текста
C++ Отрезать во всех строках часть строки после четырех символов
C++ Напечатать заданное количество символов в строках
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
09.11.2010, 13:32     замена символов в строках #2
Находим в строке последовательность из 7 цифр и вставляем '-'
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
#include <iostream>
#include<cctype>>
#include <string>
using namespace std;
 
int main()
{ 
    std::string s;
    std::string::iterator it1;
    std::string::iterator it2;
getline(cin,s);
it1 = s.begin();
do{
while(!isdigit(*it1))
it1++;
 
it2 = it1;
 
while(isdigit(*it2))
it2++;
int L = int(it2-it1);
if(L == 7){
    s.insert((it1-s.begin())+3,1,'-');
    s.insert((it1-s.begin())+6,1,'-');}
it1 = it2;
L = 0;
it1++;
}while(it1 < s.end());
cout << s;
system("pause");
return 0;
    }
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
09.11.2010, 14:15     замена символов в строках #3
прокоментируйте пожалуста второй пост?
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
09.11.2010, 14:29     замена символов в строках #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
#include <iostream>
#include<cctype>> // isdigit()
#include <string>
using namespace std;
 
int main()
{ 
    std::string s;
    std::string::iterator it1; //it1 и it2 типа указатели на отдельно взятые буквы строки
    std::string::iterator it2;
getline(cin,s); // ввод с клавы
it1 = s.begin(); // it1 указывает на первую букву строки
do{
while(!isdigit(*it1)) // пока не цифра перемещаем указатель вперед
it1++;
 
it2 = it1; // теперь оба указателя указывают на первую найденную цифру
 
while(isdigit(*it2)) // второй указатель перемещаем вперед пока последовательность цифр не кончится
it2++;
 
int L = int(it2-it1); // вычисляем кол-во цифр в последовательности
if(L == 7){ // если их 7
    s.insert((it1-s.begin())+3,1,'-'); // вставляем '-' после третьей и пятой цифр
    s.insert((it1-s.begin())+6,1,'-');}
it1 = it2; // перемещаем it1 в конец последовательности цифр чтобы искать следующую
L = 0;
it1++;
}while(it1 < s.end()); // и так до конца строки
cout << s;
system("pause");
return 0;
    }
No0b41k
 Аватар для No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
12.11.2010, 00:23  [ТС]     замена символов в строках #5
спасибо большое!, а как сделать вот это?

2. Дана строка (текст) - ввод которого производится с клавиатуры, от 1 символа до бесконечности. Если встречаем в конце предложения точку, а следующее предложение начинается с большой буквы - то заменить точку на запятую, а большую букву на маленькую.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
12.11.2010, 02:43     замена символов в строках #6
Я тут написал несколько строк, вроде результат получается, но после выполнения выскакивает ошибка:

Вобщем ничего лучшего кроме посимвольного вывода putchar() не придумал.
У кого есть идея получше и кто исправит ошибку - милости просим
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
#include <iostream>
#include <string>
#include <conio.h>
#include<cctype> // tolower()
using namespace std;
 
void main()
{
    std::string S;
    getline(cin,S);
    std::string::iterator it1;
    it1 = S.begin(); // итератор указывает на начало строки
    do
    {
        it1++; // перемещается вперед
        if(*it1 == '.') // если указывает на тчк
        {*it1 = ','; // заменяет ее на зпт
        putchar(*it1);  // выводится на экран
        it1++; // перемежается на следующий символ
        *it1 = tolower(*it1);} // переводит в строчную
 
        putchar(*it1); // строка посимвольно выводится на экран 
    } while(it1 < S.end()); // и так до конца строки
 
_getch();
}
Миниатюры
замена символов в строках  
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
12.11.2010, 15:42     замена символов в строках #7
вопрос по теме! есть ли функция типа isdigit только, чтобы она определяла большая или маленькая буква?
No0b41k
 Аватар для No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
14.11.2010, 16:19  [ТС]     замена символов в строках #8
Я тут написал несколько строк, вроде результат получается, но после выполнения выскакивает ошибка
как ни пробовал, ошибку исправить не удается(, кто знает как исправить ошибку?((
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
14.11.2010, 16:50     замена символов в строках #9
опусти ниже *іt1++ а то он не с 0-го а с первого знака, тоесть со второго читает - раз. два ошибка - ошибка разименование итератора. Тебе на чистом С надо? можно ведь обойтись без итератора, посмотри пример работы со строками, когда мы ее индексируем.
C++
1
2
3
4
5
6
7
{
    char s[128];
    cout<<"Vvedite vash text"<<endl; 
    cin>>s;//gets(s);
    for(int i=0; i<strlen(s);i++)
        {if(s[i]>='a'&& s[i]<='z'|| s[i]>='A'&& s[i]<='Z')
        s[i]='*';}  cout<<s;
вобщем, все как с массивом чисел - индексируешь по и.
индексируешь от 0 до конца, если и - точка, и++ большая то и++=уменьшаем, и==','
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2010, 23:02     замена символов в строках
Еще ссылки по теме:

C++ Замена символов
Функция strncpy не работает на строках длинее трех символов C++
C++ Замена символов
замена символов в С++ C++
C++ Замена символов в С++

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

Или воспользуйтесь поиском по форуму:
No0b41k
 Аватар для No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
14.11.2010, 23:02  [ТС]     замена символов в строках #10
Тебе на чистом С надо?
на C++
Yandex
Объявления
14.11.2010, 23:02     замена символов в строках
Ответ Создать тему
Опции темы

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