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

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

Войти
Регистрация
Восстановить пароль
 
TimONstr
Сообщений: n/a
#1

Строки, надо решить - C++

30.12.2010, 12:35. Просмотров 487. Ответов 6
Метки нет (Все метки)

через пол часа идти к преподу...сказал одну задачу сделаю-зачет поставит....
вот задача сама : (С++) В заданной строке символы стоящие на четных позициях заменить строкой "000"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2010, 12:35     Строки, надо решить
Посмотрите здесь:

массивы, решить оч. надо... - C++
Помогите пожалуйста решить, вот задача. В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)минимальный элемент...

Надо решить контрольную. - C++
Помогите пожалуйста решить контрольную работу по информатике: 1) Написать программу на языке Visual Studio 2008, которая бы принимала...

надо решить с указателями и ссылками - C++
Вводится строка слов, разделенных пробелами (возможны лишние пробелы в начале, в конце строки и между словами). Сформировать новую строку,...

Экзаменационные варианты , которые надо решить - C++
Надо решить эти задачи . Помогите кто чем может ) можно рассматривать похожие задачи тоже , пределать их в нужные не составит большого...

Помогите решить прогу оченя надо - C++
17) Отримати квадратну матрицю порядку n . 1 2 3 ... n-1 n 2 1 2 ... n-2 n-1 3 2 1 ...

Надо решить программу с матрицей. Заранее благодарин. - C++
Даны два числа k1 и k2 и матрица размера 4 x 10. Поменять местами строки1|столбцы2 матрицы с номерами k1 и k2. Заранее благодарен. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
30.12.2010, 20:24     Строки, надо решить #2
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 <iterator>
#include <cctype>
 
int main()
{
    std::string str;
    const std::string ins("000");;
    std::cout << "\n\nString -> ";
    getline(std::cin, str);
 
    for(std::string::size_type i = 0; i < str.length(); i += 2)
    {
        str.insert(i, ins);
        i += 3;
    }
 
    std::string::iterator it = str.begin();
    for(std::string::size_type i = 0; i < str.length() - 1; ++i, ++it)
        if(isdigit(str[i]) && !isdigit(str[i + 1]))
            str.erase(it + 1);
 
    std::cout << "\n\nResult string -> " << str;
    return 0;
}
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
31.12.2010, 06:52     Строки, надо решить #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
    
int main(){
    const std::string toInsert("000");
    std::string test("abcdefgh");
    std::cout << "before: " << test << std::endl;
    int i = 1;
    while ( i < test.size() ){
        test.replace(i, 1, toInsert);
        i += toInsert.size() + 1;
    }
    std::cout << "after:  " << test << std::endl;
    return 0;
}
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
31.12.2010, 21:45     Строки, надо решить #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
34
35
36
37
38
//////////////////////////////////////////////////////////////////////////////////////
//В заданной строке символы стоящие на четных позициях заменить строкой "000". 
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
//////////////////////////////////////////////////////////////////////////////////////
T_str  replace_even_symb_to(const T_str&  s, const T_str&  substr)
{
    struct  T_replace_even_symb_to
    {
        T_str  substr_;
        int    counter_;        
        T_replace_even_symb_to(const T_str&  substr) : substr_(substr), counter_()
        {}
        T_str  operator() (char  c)
        {
            return  (counter_++ % 2) ? substr_ : T_str(1, c);
        }
    };
 
    std::ostringstream            sout;
    std::ostream_iterator<T_str>  sout_beg(sout);
    std::transform(s.begin(), s.end(), sout_beg, T_replace_even_symb_to(substr));
    return  sout.str();   
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::cout << "String: ";
    T_str  s;
    std::cin >> s;
    std::cout << replace_even_symb_to(s, "000")
              << std::endl;
}
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
01.01.2011, 02:45     Строки, надо решить #5
Mr.X, мы простых путей не ищем!
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 <string>
#include <sstream>
 
class StrProc {
    std::string buf;
public:
    StrProc(const std::string & s, const std::string & r, bool change_evens = true){
        std::ostringstream ost;
        for ( int i = 0; i < s.size(); ++i )
           if ( ( ( i & 1 ) && change_evens ) || ( ! ( i & 1 ) && ! change_evens ) )
               ost << r;
            else
                ost << s[i];
        buf = ost.str();
    }
    std::string str() const { return buf; }
};
 
std::ostream & operator << (std::ostream & ost, const StrProc & sp){
    ost << sp.str();
    return ost;
}
 
int main(){
    const std::string to_replace("000");
    std::string buf;
 
    while ( std::cout << "String: " && std::getline(std::cin, buf) && ! buf.empty() )
        std::cout << "Result: " << StrProc(buf, to_replace) << std::endl;
 
    return 0;
}
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
01.01.2011, 04:00     Строки, надо решить #6
Цитата Сообщение от easybudda Посмотреть сообщение
Mr.X, мы простых путей не ищем!
Да я писал свой вариант не в смысле поизвращаться, просто циклы – это сишный код, а в C++ все циклы за нас уже написал Степанов в своих алгоритмах.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2011, 13:35     Строки, надо решить
Еще ссылки по теме:

Надо решить "Дано трехзначное число. Определить входит ли в него цифра 4." - C++
Дано трехзначное число. Определить входит ли в него цифра 4.

Строки в файле.Очень надо! - C++
Прошу помощи!!! Есть файл в нем 10 строк,нужно поочередно записать каждую строку в str, вроде как нужно это делать в цикле(но там...

Решить программу про строки на С++ - C++
Дана строка символов. Вставить после каждого символа &quot;%&quot;

Задача на строки.ПОмогите решить - C++
Помогите пожалуйста решить задачу Дана строка.Вывести данную строку задом наперед


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

Или воспользуйтесь поиском по форуму:
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
01.01.2011, 13:35     Строки, надо решить #7
А я могу ещё проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
int main(int argc, char *argv[])
{
    std::string str,zm="000";
    std::cout<<"Enter string:"<<std::endl;
    std::getline(std::cin,str);
    for (int i=0; i<(int)str.length(); i+=4)
    {
        str.erase(str.begin()+i);
        str.insert(i,zm);
    }
    std::cout<<str<<std::endl;
    
    return 0;
}
Если честно, чрезмерное использование придуманных за нас алгоритмов только усложняют программу.
Yandex
Объявления
01.01.2011, 13:35     Строки, надо решить
Ответ Создать тему
Опции темы

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