If you want to use strcat no matter what, that's ok but in that case at least use standard C++ with the rest.
1) You do not include string.h, which is the header file in which strcat is defined.
2) You DO include conio.h, which you don't need in this example
3) You do include iostream.h, which is deprecated since... well, a long time. Include iostream (without the.h) instead.
The problem in your case is the way you pass arguments to strcat and what an array of const char* looks in C++.
The problem is, your arrays look like that in memory:
mass: "one\0two\0three\0"
mass1: "four\0five\0six\0"
|
strcat is declared like that:
char* strcat(char* dest, char* source);
It appends source to dest, and then returns dest.
In your case, after appending mass1[0] to mass[0], it looks like that:
mass: "onefour\0\0three\0"
mass1: "four\0five\0six\0"
|
If you don't understand why this happens, you are better off including <string> and using std::strings instead.