// ********************************************************************* //
//  Jeff Balsley  11/5/2001                                              //
//                                                                       //
// ********************************************************************* //
//  Known Bugs:                                                          //
//                                                                       //
// ********************************************************************* //

#include<iostream>
#include<cstring>
using namespace std;

// Function Declarations //
void get_string(char string[]);
void print_string(char string[]);
void concat_string(char string1[], char string2[], char string3[]);
void append_string(char string1[], char string2[]);
void replace_string(char string1[], char string2[]);

int main(void)
{
	// dyanmically allocate memory for strings
	char * string1 = new char [50];
	char * string2 = new char [50];
	char * string3 = new char [100];

	get_string(string1);
	get_string(string2);

	//print_string(string1);
	//print_string(string2);
	//replace_string(string1, string2);
	//append_string(string1,string2);
	concat_string(string1, string2, string3);
	print_string(string1);
	print_string(string2);
	print_string(string3);

	delete [] string1;
	delete [] string2;
	delete [] string3;
	return 0;
}
// *********************************************************** //
//  This function will get a string from user input            //
// *********************************************************** //
void get_string(char string[])
{
	cout << "Enter a string: ";
	cin.getline(string, 40);
}

// **************************************************************** //
//  This function will print to standard out the designated string  //
// **************************************************************** //
void print_string(char string[])
{
	cout << string << "\n";
}

// **************************************************************** //
//  This function will compare the two input strings and replace    //
//  the shorter one with the longer one.                            //
// **************************************************************** //
void replace_string(char string1[], char string2[])
{
	int i;

	if (strlen(string1) > strlen(string2)){
		// string 1 is longer than string 2
		// so copy 1 into 2
		cout << "String 1 is longer than string 2\n";
		for (i=0; i<=strlen(string1); ++i){
			string2[i] = string1[i];
		}
	}else if ( strlen(string2) > strlen(string1) ){
		// string 2 is longer than string 1
		// copy string2 into string 1
		cout << "String 2 is longer than string 1\n";
		for (i=0; i<=strlen(string2); ++i){
			string1[i] = string2[i];
		}
	}else if ( strlen(string1) == strlen(string2) ){
		cout << "The strings are the same size\n";
	}else{
		cout << "Something went wrong!\n";
	}

}

// ***************************************************************** //
//  This function will append string 2 onto string 1                 //
//  string1 = string1 + string2                                      //
// ***************************************************************** //
void append_string(char string1[], char string2[])
{
	int i;
	int length1 = strlen(string1);
	int length2 = strlen(string2);

	for (i=length1; i<=(length1 + length2); ++i){
		string1[i] = string2[i - length1];
	}
}

// ****************************************************************** //
//  This function will create a new string which is the "sum" of      //
//  string 1 and 2. String1 and 2 remain unchanged                    //
//  string3 = string1 + string2                                       //
// ****************************************************************** //
void concat_string(char string1[], char string2[], char string3[])
{
	int i;

	for(i=0; i<strlen(string1); ++i){
		string3[i] = string1[i];
	}

	for(i=strlen(string1); i<=(strlen(string1) + strlen(string2)); ++i){
		string3[i] = string2[i - strlen(string1)];
	}
}
