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

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

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

В строке заменить все двоеточия ( точкой с запятой ( и посчитать количество замен.
 Комментарий модератора 
Перенесено из раздела Turbo Pascal
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2013, 20:55
Ответы с готовыми решениями:

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

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

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

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

16
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
17.09.2013, 21:39 2
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
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 21:51 3
_, по-моему, для С++, более подходящий вариант с использованием объектов, нет?
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...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
17.09.2013, 22:01 4
а я сделал с динамическим массивом, и он чет не хочет работать с 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
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 22:09 5
dzrkot, не знаю, что у вас там прыгает, но:
В 11 строке вы выделяете неизвестно сколько байт (m не инициализирована)
+ вы не освобождаете выделенную память при помощи delete [] a;
1
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
17.09.2013, 22:10 6
Цитата Сообщение от 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 7
Внесу и я свою лепту.
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
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 22:18 8
Цитата Сообщение от dzrkot Посмотреть сообщение
там cin>>m; дальше, вроде без разницы и так работало, но я подправил, и delete[] a; добавил. всёравно не работает...
m у вас используется до того, как будет ей присвоено значение из cin. Посмотрите внимательно.
Цитата Сообщение от dzrkot Посмотреть сообщение
.что за страшные библиотеки))))
Это все стандартная библиотека C++
шаблон std::function появилс в стандарте С++11
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
17.09.2013, 22:22 9
Цитата Сообщение от gromo Посмотреть сообщение
m у вас используется до того, как будет ей присвоено значение из cin. Посмотрите внимательно.
да я вижу, я исправил сразу!!!
просто он на это внимания не обращал, и выделял столько сколько нужно(неизвестно почему), до этого я его заполнял rand()-ом и было норм, косяк появился после cin.getline();
0
gray_fox
17.09.2013, 22:30
  #10

Не по теме:

Цитата Сообщение от 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
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 22:42 11
dzrkot, Не знаю, что в вашей программе такого, но у меня даже gdb отказывается её трассировать. И она также прыгает.
0
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
17.09.2013, 22:50 12
Забыл посчитать количество замен. Теперь правильно.
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...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
17.09.2013, 22:57 13
Цитата Сообщение от gromo Посмотреть сообщение
dzrkot, Не знаю, что в вашей программе такого, но у меня даже gdb отказывается её трассировать. И она также прыгает.
да всё мне уже помогли, разобрался))
0
382 / 280 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
17.09.2013, 23:04 14
Цитата Сообщение от dzrkot Посмотреть сообщение
да всё мне уже помогли, разобрался))
ну так в чем была проблема?
0
zzzZZZ...
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
18.09.2013, 18:31 15
Цитата Сообщение от gromo Посмотреть сообщение
ну так в чем была проблема?
перед get.line(); написать строку cin.sync(); и всё заработало, с чем связано пока не разбирался ещё, только с работы пришёл))
0
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,493
18.09.2013, 18:43 16
Цитата Сообщение от gray_fox Посмотреть сообщение
std::function<bool(const char)>
мне интересно какой вид у этого темплейта вообще, чтобы принимал bool(const char)
0
What a waste!
1606 / 1298 / 180
Регистрация: 21.04.2012
Сообщений: 2,724
18.09.2013, 23:28 17
Цитата Сообщение от Raali Посмотреть сообщение
мне интересно какой вид у этого темплейта вообще, чтобы принимал bool(const char)
Специализация скорее всего, вроде
C++
1
2
3
4
5
template<typename...>
class function;
 
template<typename R, typename ...Args>
class function<R (Args...)> { /* ... */ };
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2013, 23:28

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru