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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
#1

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

09.11.2010, 00:33. Просмотров 2177. Ответов 9
Метки нет (Все метки)

Доброй ночи форумчане.

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

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

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

Благодарю заранее!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 00:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос замена символов в строках (C++):

Замена слов в строках - C++
Доброго времени суток! Помогите, пожалуйста, вот с таким заданием: нужно в тексте заменить все слова "and" на "и". Например, есть строка:...

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

Напечатать заданное количество символов в строках - C++
подскажите алгоритм для задачки. Нужно ввести количество символов, к примеру 18, и и количество символов в строке, к примеру 4. Через цикл...

Подсчитать количество символов в строках текстового файла - C++
подскажите, пожалуйста, как посчитать количество символов в строках текстового файла

Работа с файлом. посчитать количество символов в строках и отцентрировать - C++
Имеется файл input.txt . В каждой строке может быть не более 80 символов. нужно Посчитать количество символов в каждой строчке, для того,...

Функция strncpy не работает на строках длинее трех символов - C++
Подскажите, написал код... Хочу копировать каждое слово в g (т.е. s3). Функцией strncpy. Длину находит правильную, но при копировании...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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;
    }
0
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
09.11.2010, 14:15 #3
прокоментируйте пожалуста второй пост?
0
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;
    }
2
No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
12.11.2010, 00:23  [ТС] #5
спасибо большое!, а как сделать вот это?

2. Дана строка (текст) - ввод которого производится с клавиатуры, от 1 символа до бесконечности. Если встречаем в конце предложения точку, а следующее предложение начинается с большой буквы - то заменить точку на запятую, а большую букву на маленькую.
0
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();
}
1
Миниатюры
замена символов в строках  
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
12.11.2010, 15:42 #7
вопрос по теме! есть ли функция типа isdigit только, чтобы она определяла большая или маленькая буква?
0
No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
14.11.2010, 16:19  [ТС] #8
Я тут написал несколько строк, вроде результат получается, но после выполнения выскакивает ошибка
как ни пробовал, ошибку исправить не удается(, кто знает как исправить ошибку?((
0
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 до конца, если и - точка, и++ большая то и++=уменьшаем, и==','
1
No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
14.11.2010, 23:02  [ТС] #10
Тебе на чистом С надо?
на C++
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2010, 23:02
Привет! Вот еще темы с ответами:

Отрезать во всех строках часть строки после четырех символов - C++
Отрезать во всех строках часть строки после четырех символов.

Подсчет количества символов разного вида на одинаковых позициях в разных строках - C++
Добрый день. нужна помощь в написании программки. Я только недавно начал изучать С++ и еще много чего не понимаю. Поэтому и прошу...

Подсчитать количество малобуквенных слов (менее четырех символов) во всех строках исходного текста - C++
Подсчитать количество малобуквенных слов (менее четырех символов) во всех строках исходного текста. Добавлено через 3 часа 17 минут ...

Замена символов в С++ - C++
Пользователь с клавиатуры вводит текст. Нужно вместо пробелов вставить запятую и пробел. Если можно с пояснениями. Спасибо большое.


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

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

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