Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/56: Рейтинг темы: голосов - 56, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 5

В строке заменить все двоеточия точкой с запятой и посчитать количество замен

17.09.2013, 20:55. Показов 12018. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В строке заменить все двоеточия ( точкой с запятой ( и посчитать количество замен.
 Комментарий модератора 
Перенесено из раздела Turbo Pascal
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2013, 20:55
Ответы с готовыми решениями:

В строке заменить все двоеточия (:) точкой с запятой(;). Подсчитать кол-во замен
Помогите, пожалуйста. В строке заменить все двоеточия (:) точкой с запятой(;). Подсчитать кол-во замен.

В строке заменить все точки «.» на запятые «,», а двоеточия «:» на точку с запятой «;». Подсчитать количество замен
В строке заменить все точки «.» на запятые «,», а двоеточия «:» на точку с запятой «;». Подсчитать количество замен.

В строке заменить все двоеточия точкой с запятой, подсчитать количество замен
Помогите решить задачу, не получается))))))) Задание вот такое. В строке заменить все двоеточия точкой с запятой.Подсчитать количество...

16
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
17.09.2013, 21:39
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    char msg[] = "qwer: tyui: op: asdf: ghjk: l: zxcv: bnm:";
 
    for (int i=0; msg[i]; i++)
        if (msg[i]==':')
            msg[i]=';';
 
    return 0;
}
0
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 21:51
_, по-моему, для С++, более подходящий вариант с использованием объектов, нет?
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
#include <iostream>
#include <algorithm>
#include <functional>
 
int main()
{
    std::string sourceString("Tex:t w::i:th ::: something:");
    std::string newString(sourceString);
    size_t replacingCnt = size_t();
 
    //Лямбда чекер двоеточий
    std::function<bool(const char)> counter = [](const char ch) -> bool {
        if(ch == ':')
            return true;
        return false;
    };
 
    //Считаем количество ':'
    replacingCnt = std::count_if(sourceString.begin(), sourceString.end(), counter);
 
    //Делаем фактическую замену
    std::replace(newString.begin(), newString.end(), ':', ';');
 
    //Выводим результаты
    std::cout<<"Source string: " <<sourceString <<'\n'
       <<"String after replacing: " <<newString <<'\n'
      <<"Number of replacings: " <<replacingCnt <<std::endl;
    return 0;
}
masha2010,
Если не секрет, сколько лет вашему преподавателю?))
1
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
17.09.2013, 22:01
а я сделал с динамическим массивом, и он чет не хочет работать с cin.getline() он через него пререпрыгивает сразу в конец проги, а если закомментить cin>>m; и присвоить int m=10; к примеру то работает норм, в чём прикол?)

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
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;
int main()
{
    int m;
    char *a;
    int counter=0;
    a=new char[m];
    cout<<"Enter size line"<<endl;
    cin>>m;
    cout<<"Enter value line"<<endl;
    cin.getline(a,m);
    for (int i=0;i<m;i++)
    {
        cout<<a[i]<<endl;
        if (a[i]==':')
        {
            a[i]=';';
            counter++;
        }
    }
for (int i=0;i<m;i++)
    {
    cout<<a[i];
    }
cout <<"counter = "<<counter<<endl;
    return 0;
}
0
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 22:09
dzrkot, не знаю, что у вас там прыгает, но:
В 11 строке вы выделяете неизвестно сколько байт (m не инициализирована)
+ вы не освобождаете выделенную память при помощи delete [] a;
1
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
17.09.2013, 22:10
Цитата Сообщение от gromo Посмотреть сообщение
dzrkot, не знаю, что у вас там прыгает, но:
В 11 строке вы выделяете неизвестно сколько байт (m не инициализирована)
+ вы не освобождаете выделенную память при помощи delete [] a;
там cin>>m; дальше, вроде без разницы и так работало, но я подправил, и delete[] a; добавил. всёравно не работает...

ЫЫЫЫ вы какую-то страшную для меня прогу написали...#include <algorithm>
#include <functional> ....что за страшные библиотеки))))
0
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
17.09.2013, 22:15
Внесу и я свою лепту.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
string str;
cout<<"Input string "<<endl;
cin>>str;
cout<<"string is "<<str<<endl;
for(unsigned i=0; i=str.find(":", i), i!=std::string::npos;)
  {
    str.replace(i, 1, ";");
    i+=1;
  }
cout<<"string is "<<str<<endl;
 return 0;
}
1
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 22:18
Цитата Сообщение от dzrkot Посмотреть сообщение
там cin>>m; дальше, вроде без разницы и так работало, но я подправил, и delete[] a; добавил. всёравно не работает...
m у вас используется до того, как будет ей присвоено значение из cin. Посмотрите внимательно.
Цитата Сообщение от dzrkot Посмотреть сообщение
.что за страшные библиотеки))))
Это все стандартная библиотека C++
шаблон std::function появилс в стандарте С++11
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
17.09.2013, 22:22
Цитата Сообщение от gromo Посмотреть сообщение
m у вас используется до того, как будет ей присвоено значение из cin. Посмотрите внимательно.
да я вижу, я исправил сразу!!!
просто он на это внимания не обращал, и выделял столько сколько нужно(неизвестно почему), до этого я его заполнял rand()-ом и было норм, косяк появился после cin.getline();
0
17.09.2013, 22:30

Не по теме:

Цитата Сообщение от gromo Посмотреть сообщение
C++
1
2
3
4
5
6
//Лямбда чекер двоеточий
std::function<bool(const char)> counter = [](const char ch) -> bool {
    if(ch == ':')
        return true;
    return false;
};
Чёт мощно завернули)
C++
1
auto counter = [] (const char ch) { return ch == ':'; };

1
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 22:42
dzrkot, Не знаю, что в вашей программе такого, но у меня даже gdb отказывается её трассировать. И она также прыгает.
0
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
17.09.2013, 22:50
Забыл посчитать количество замен. Теперь правильно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string str;
    cout<<"Input string "<<endl;
    cin>>str;
    cout<<"String is "<<str<<endl;
    int counter=0;
    for(unsigned i=0; i=str.find(":", i), i!=std::string::npos;)
    {
        str.replace(i, 1, ";");
        i+=1;
        counter++;
    }
    cout<<"New string is "<<str<<endl;
    cout<<"Number of replaced symbols   "<<counter;
    return 0;
}
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
17.09.2013, 22:57
Цитата Сообщение от gromo Посмотреть сообщение
dzrkot, Не знаю, что в вашей программе такого, но у меня даже gdb отказывается её трассировать. И она также прыгает.
да всё мне уже помогли, разобрался))
0
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 23:04
Цитата Сообщение от dzrkot Посмотреть сообщение
да всё мне уже помогли, разобрался))
ну так в чем была проблема?
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
18.09.2013, 18:31
Цитата Сообщение от gromo Посмотреть сообщение
ну так в чем была проблема?
перед get.line(); написать строку cin.sync(); и всё заработало, с чем связано пока не разбирался ещё, только с работы пришёл))
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
18.09.2013, 18:43
Цитата Сообщение от gray_fox Посмотреть сообщение
std::function<bool(const char)>
мне интересно какой вид у этого темплейта вообще, чтобы принимал bool(const char)
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
18.09.2013, 23:28
Цитата Сообщение от Raali Посмотреть сообщение
мне интересно какой вид у этого темплейта вообще, чтобы принимал bool(const char)
Специализация скорее всего, вроде
C++
1
2
3
4
5
template<typename...>
class function;
 
template<typename R, typename ...Args>
class function<R (Args...)> { /* ... */ };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2013, 23:28
Помогаю со студенческими работами здесь

В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен
Добрый день, уважаемые форумчане! Прощу помочь мне с задачей. Пытался решить, но всё тщетно. &quot;В строке заменить все двоеточия (: )...

В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен
В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен. Памирыч: Во избежание появления смайлов в...

В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен
Помогите с программой! пожалуйста!

В строке заменить все двоеточия точкой с запятой. Подсчитать количество замен
Подсчитать количество замен.

В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен
помогите в т.Паскаль(оч надо!!


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru