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

Доброго вам розберитесь пожалуста с классом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Текстовый файл http://www.cyberforum.ru/cpp-beginners/thread997960.html
Дан файл, содержащий зашифрованный русский текст. Каждая буква заменяется на следующую за ней (Буква Я заменяется на букву А). Получить в новом файле расшифровки данного текста.
C++ Задать размерность массива рандомно, и выполнить над ним действие! Объявить массив целых чисел и с заполнить его случайными значениями. Диапазон значений его элементов заданы в Вашем варианте индивидуального задания . В индивидуальных заданиях указано также, какую пропитки массива стоит сделать. Дополнительные условия: 1 ) размер массива определяется в начале выполнения программы как случайное число в диапазоне 50-200 ; 2) в тексте программы запрещается... http://www.cyberforum.ru/cpp-beginners/thread997951.html
Вывод списка в файл C++
Мне необходимо чтобы изначально вводился список книг (автор, название, год, количество страниц), с этим все в порядке, но после этого необходимо вывести список книг изданных после заданного года. Получается так что все книги изданные после заданного года почему-то выводятся дважды кроме последней которая выводится 1 раз, подскажите почему так происходит. #define _CRT_SECURE_NO_WARNINGS #include...
C++ Несложная задача,условие на фото
Все на картинке
C++ Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами http://www.cyberforum.ru/cpp-beginners/thread997927.html
Помогите решить найти ошибку, код вроде как правильный, но все равно выдает ошибку, помогите найти ошибку, пожалуйста? Вот собственно задание: В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами? Вот мой код: #include...
C++ Задачка несложная http://5.firepic.org/5/images/2013-11/04/8hpfr4qkym6l.png подробнее

Показать сообщение отдельно
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
05.11.2013, 01:12     Доброго вам розберитесь пожалуста с классом
вот такое получилось. подправишь там, если что. в общем, смотри сам, как с этим поступать. много кода. народ как-то с плюсиком делает, не умею.

файл rjadky.cpp:
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
#include <iostream>
#include "StringArray.h"
 
using namespace std;
 
int main(int argc, char* argv[])
{
    StringArray str_arr;
    str_arr.add ("stroka 0");
    str_arr.add ("stroka 1");
    str_arr.add ("stroka 2");
    str_arr.add ("stroka 3");
    str_arr.add ("stroka 4");
    
    StringArray str_arr2;
    str_arr2.add ("stroka 10");
    str_arr2.add ("stroka 1");
    str_arr2.add ("stroka 12");
    str_arr2.add ("stroka 13");
 
    cout << "str_arr, element index 2:" << endl;
    string str;
    if (str_arr.getStr (&str, 2)){
        cout << str.c_str() << endl;
    } else {
        cout << "index out of range" << endl;
    }
    str_arr.display(3);
    str_arr.display();
    str_arr2.display();
    StringArray *pStr_plus_2 = str_arr.concatenate (&str_arr2);
    pStr_plus_2->display();
    delete pStr_plus_2;
    pStr_plus_2 = NULL;
    cout << "press any key..." << endl;
    cin.ignore();
    cin.get();
 
    return 0;
}
StringArray.h:
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
#pragma once
#include <string>
#include <vector>
 
class StringArray {
    class MyString {
    public:
        MyString(const char *pBuf);
        ~MyString();
        void display()const;
        void getStr (std::string *pStr) const;
        bool equal (const MyString *pStr) const;
        MyString *clone()const;
    private:
        char *m_pBuffer;
        int m_Size;
    };
public:
    
    void add (const char *pBuf);
    bool getStr (std::string *pStr, int idx) const;
    StringArray* concatenate (const StringArray *pStrArr) const;
    void display (int idx) const;
    void display () const;
 
    StringArray(void);
    ~StringArray(void);
 
private:
    std::vector<MyString*> m_Strings;
    bool contains (const MyString *pMyStr)const;
    void add (MyString *pMS);
};
StringArray.cpp:
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 "StringArray.h"
 
void StringArray::MyString::getStr (std::string *pStr) const{
    pStr->clear();
    if (m_Size > 0){
        *pStr = m_pBuffer;
    }
}
bool StringArray::MyString::equal (const MyString *pStr) const{
    return pStr != NULL && pStr->m_Size > 0 && pStr->m_Size == m_Size && ::strcmp (pStr->m_pBuffer, this->m_pBuffer) == 0;
}
StringArray::MyString* StringArray::MyString::clone()const{
    return new MyString(this->m_pBuffer);
}
void StringArray::MyString::display()const{
    if (m_Size == 0){
        std::cout << "string empty" << std::endl;
    } else {
        std::cout << this->m_pBuffer << std::endl;
    }
}
StringArray::MyString::MyString(const char *pBuf){
    m_Size = ::strlen (pBuf) + 1;
    m_pBuffer = (char*)::malloc (m_Size);
    ::strcpy (m_pBuffer, pBuf);
}
StringArray::MyString::~MyString(){
    free (m_pBuffer);
    m_pBuffer = NULL;
    m_Size = 0;
}
    
void StringArray::add (const char *pBuf){
    MyString *pMS = new MyString(pBuf);
    this->m_Strings.push_back (pMS);
}
void StringArray::add (MyString *pMS){
    this->m_Strings.push_back (pMS);
}
bool StringArray::getStr (std::string *pStr, int idx)const{
    bool exists = idx >= 0 && idx < m_Strings.size();
    if (exists){
        (*(m_Strings.begin() + idx))->getStr(pStr);
    } else {
        pStr->clear();
    }
    return exists;
}
bool StringArray::contains (const MyString *pMyStr)const{
    bool cont = false;
    std::vector<MyString*>::const_iterator cit;
    for (cit = m_Strings.begin(); cit != m_Strings.end(); cit++){
        if ((*cit)->equal (pMyStr)){
            cont = true;
            break;
        }
    }
    return cont;
}
StringArray* StringArray::concatenate (const StringArray *pStrArr)const{
    StringArray *pNewStrArr = NULL;
    std::vector<MyString*>::const_iterator cit;
    if (pStrArr != NULL){
        pNewStrArr = new StringArray();
        // add all "my" not included in the other
        for (cit = m_Strings.begin(); cit != m_Strings.end(); cit++){
            if (!pStrArr->contains(*cit)){
                pNewStrArr->add ((*cit)->clone());
            }
        }
        // add now all from argument
        for (cit = pStrArr->m_Strings.begin(); cit != pStrArr->m_Strings.end(); cit++){
            pNewStrArr->add ((*cit)->clone());
        }
    }
    return pNewStrArr;
}
void StringArray::display (int idx)const{
    bool exists = idx >= 0 && idx < m_Strings.size();
    if (exists){
        (*(this->m_Strings.begin()+idx))->display();
    } else {
        std::cout << "index out of range" << std::endl;
    }
}
void StringArray::display ()const{
    std::vector<MyString*>::const_iterator cit;
    for (cit = m_Strings.begin(); cit != m_Strings.end(); cit++){
        (*cit)->display();
    }
}
 
StringArray::StringArray(void)
{
}
 
StringArray::~StringArray(void){
    std::vector<MyString*>::iterator it;
    for (it = m_Strings.begin(); it != m_Strings.end(); it++){
        delete *it;
    }
    m_Strings.clear();
}
пока, пора спать.
 
Текущее время: 22:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru