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

Вставка в строку другой строки, начиная с заданной позиции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ New - исключения http://www.cyberforum.ru/cpp-beginners/thread149548.html
Анука парни, подскажите что не так делаю. Есть такой код int main() { int i; double *p; try { for ( i=0; i<5000; i++) {
C++ счётчик помогите пожалуста написать програму: "в тексте подсчитать количество вхождений заданной буквы." http://www.cyberforum.ru/cpp-beginners/thread149542.html
Отладчик C++
Установила новый CodeBloks. После написания программы хочу запустить отладчик. Ставлю breakpoint. После запуска появляется окно вроде CodeBloks default has changed save ? После указания YES (пробывала и NO что правильно?)программа запускается доходит до Breakpoint и выходит ,написав Setting breakpoints Debugger name and version: GNU gdb 6.7.50.20071127 Child process PID: 3968 Program...
сначала цифры а потом буквы C++
Доброго времени суток!! Люди добрые! Написать программу, которая выводит сначала цифры, а потом буквы.
C++ значение логарифма http://www.cyberforum.ru/cpp-beginners/thread149521.html
Здраствуйте! помогите пожалуста вычислить приближенное значение логарифма натурального от произвольного аргумента | x | <1, что вводится с клавиатуры (использовать ряд Тейлора)
C++ Доработка программы Вот код: #include <stdio.h> #include <dos.h> #include <math.h> void main(void) { подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
09.06.2011, 09:23     Вставка в строку другой строки, начиная с заданной позиции
Цитата Сообщение от x-positive Посмотреть сообщение
Прошу прощенья, easybudda, а у меня у одного находит 21 ошибку в данном коде (последнем).
В "последнем" всего 11 строк
Вот слепил всё вместе, ничего не меняя, всё работает
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <cstring>
 
class String {
        char * m_pBuf;
        int m_strLen;
public:
        String() : m_strLen(0) {
                m_pBuf = new char [ 1 ];
                *m_pBuf = 0;
        }
        String(const char * pCStr ){
                m_strLen = strlen(pCStr);
                m_pBuf = new char [ m_strLen + 1 ];
                strcpy(m_pBuf, pCStr);
        }
        String(const String & s){
                *this = s;
        }
        ~String(){
                if ( m_pBuf )
                        delete [] m_pBuf;
        }
        const String & operator = (const String & s){
                if ( this != &s ){
                        if ( m_pBuf )
                                delete [] m_pBuf;
                        m_strLen = s.m_strLen;
                        m_pBuf = new char [ m_strLen + 1 ];
                        strcpy(m_pBuf, s.m_pBuf);
                }
                return *this;
        }
        bool insertAt(int pos, const String & s){
                if ( pos < 0 || pos > m_strLen || s.m_strLen == 0 )
                        return false;
                char * tmpBuf = new char [ m_strLen + s.m_strLen + 1 ];
                if ( pos ){
                        memcpy(tmpBuf, m_pBuf, pos);
                        memcpy(tmpBuf + pos, s.m_pBuf, s.m_strLen);
                        if ( pos < m_strLen )
                                memcpy(tmpBuf + pos + s.m_strLen, m_pBuf + pos, m_strLen - pos);
                }
                else {
                        memcpy(tmpBuf, s.m_pBuf, s.m_strLen);
                        memcpy(tmpBuf + s.m_strLen, m_pBuf, m_strLen);
                }
                m_strLen += s.m_strLen;
                tmpBuf[m_strLen] = 0;
                delete [] m_pBuf;
                m_pBuf = tmpBuf;
                return true;
        }
        bool erase(int pos, int cnt){
                if ( pos < 0 || pos > m_strLen - 1 || cnt < 1 )
                        return false;
                char * tmpBuf;
                if ( cnt > m_strLen - pos )
                        cnt = m_strLen - pos;
                tmpBuf = new char [ m_strLen - cnt + 1 ];
                if ( pos )
                        memcpy(tmpBuf, m_pBuf, pos);
                if ( pos + cnt < m_strLen )
                        memcpy(tmpBuf + pos, m_pBuf + pos + cnt, m_strLen - pos - cnt);
                m_strLen -= cnt;
                tmpBuf[m_strLen] = 0;
                delete [] m_pBuf;
                m_pBuf = tmpBuf;
                return true;
        }
        int len() const { return m_strLen; }
        friend std::ostream & operator << (std::ostream & ost, const String & s){
                ost << s.m_pBuf;
                return ost;
        }
};
 
int main(){
        String a("abcdefgh");
        String b("zzz");
        std::cout << "A:  " << a << std::endl;
        std::cout << "B:  " << b << std::endl;
        std::cout << "Inserting B at middle of A..." << std::endl;
        a.insertAt(a.len() / 2, b);
        std::cout << "AB: " << a << std::endl;
        String c;
        c = a;
        std::cout << "Copy of A: " << c << std::endl;
        std::cout << "Adding B to begin of C..." << std::endl;
        c.insertAt(0, b);
        std::cout << "C:  " << c << std::endl;
        std::cout << "Adding B to end of C..." << std::endl;
        c.insertAt(c.len(), b);
        std::cout << "C:  " << c << std::endl;
        std::cout << "Erase 3 first..." << std::endl;
        c.erase(0, 3);
        std::cout << "C:  " << c << std::endl;
        std::cout << "Erase 3 last..." << std::endl;
        c.erase(c.len() - 3, 3);
        std::cout << "C:  " << c << std::endl;
        std::cout << "Erase 3 middle..." << std::endl;
        c.erase(4, 3);
        std::cout << "C:  " << c << std::endl;
        return 0;
}
Вставка в строку другой строки, начиная с заданной позиции

Не по теме:

Знатный покойник, год пролежал...

 
Текущее время: 12:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru