[ create a new paste ] login | about

Link: http://codepad.org/zqQpomQy    [ raw code | output | fork ]

C++, pasted on Dec 9:
#include<iostream>
using namespace std;
 
class CStrings {
        char **str;
        int size, count; //размер и кол-во заполненных строк
public:
        CStrings (int n);
        ~CStrings();
        void Add(const char *s);
        void print();
        void del(int n);
        void deleteall (/*char **str*/);
};
 
CStrings::CStrings(int n){
        size = n;
        str = new char*[n];
        count = 0;
}
void CStrings::Add (const char *s){
        str[count] = new char[strlen(s)+1];
        strcpy(str[count],s);
        count++;
}
 
CStrings::~CStrings(){
        for (int i = 0;i<count;i++)
                delete[]str[i];
        delete[]str;
}
void CStrings::print(){
        for (int i = 0; i < count; i++)
                cout << str[i] << endl;
}
void CStrings::del(int n){  //как в дебаге посмотреть количество массива??  переделать ретурном!!
        char **strcopy = new char *[count-1];
        for (int i = 0, j = 0; j < count; j++)
        {
                if ( j != n ){
                        strcopy[i] = new char [strlen(str[j]) + 1];
                        strcpy(strcopy[i],str[j]);
                        i++;
                }
        }
 
        deleteall(/*str*/);
        count--;
        /*char ***/str = new char *[count];
        for (int i = 0; i < count; i++){
                str[i] = new char [strlen(strcopy[i]) + 1];
                strcpy(str[i],strcopy[i]);
        }
        for (int i = 0; i< count; i++)
          delete[] strcopy[i];
        delete[] strcopy;
}
 
void CStrings::deleteall (/*char **tr*/){
 
        for (int i = 0; i < count; i++){
                delete[] str[i];
                str[i] = 0;
        }
        delete[] str;
        str = 0;
 
}
 
int main()
{
        CStrings s(20);
        s.Add("First");
        s.Add ("Second");
        s.Add ("Third");
        s.Add ("Four");
        s.Add ("Five");
        s.print ();
        s.del(1);
        s.del(1);
        cout<<endl;
        s.print ();
}
 


Output:
1
2
3
4
5
6
7
8
9
First
Second
Third
Four
Five

First
Four
Five


Create a new paste based on this one


Comments: