codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#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 (); }
Private
[
?
]
Run code
Submit