Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
 Аватар для No0b41k
1 / 1 / 1
Регистрация: 19.09.2010
Сообщений: 68

Замена символов в строках

09.11.2010, 00:33. Показов 2856. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.11.2010, 00:33
Ответы с готовыми решениями:

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

Замена всех подстрок в строках
Подскажите , пожалуйста, как решить реальную задачу: С сервера на терминал передается несколько файлов (12-16 шт по 5-8 Мб). Расширение...

Сравнение количества символов в строках
Доброго времени суток. Написал программу, для вуза нужно, но позже увидел, что нужно пользоваться встроенными функциями (iostream). ...

9
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
09.11.2010, 13:32
Находим в строке последовательность из 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
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
09.11.2010, 14:15
прокоментируйте пожалуста второй пост?
0
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
09.11.2010, 14:29
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
1 / 1 / 1
Регистрация: 19.09.2010
Сообщений: 68
12.11.2010, 00:23  [ТС]
спасибо большое!, а как сделать вот это?

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

Вобщем ничего лучшего кроме посимвольного вывода 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
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
12.11.2010, 15:42
вопрос по теме! есть ли функция типа isdigit только, чтобы она определяла большая или маленькая буква?
0
 Аватар для No0b41k
1 / 1 / 1
Регистрация: 19.09.2010
Сообщений: 68
14.11.2010, 16:19  [ТС]
Я тут написал несколько строк, вроде результат получается, но после выполнения выскакивает ошибка
как ни пробовал, ошибку исправить не удается(, кто знает как исправить ошибку?((
0
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
14.11.2010, 16:50
опусти ниже *і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
1 / 1 / 1
Регистрация: 19.09.2010
Сообщений: 68
14.11.2010, 23:02  [ТС]
Тебе на чистом С надо?
на C++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2010, 23:02
Помогаю со студенческими работами здесь

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

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

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

Определить функции для поиска и замены символов в строках
Указанные в задании функции разработать осуществляя доступ к нужному символу в строке (движение по строке) путем изменения значения...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip . . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru