#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 ();
}