#include "..\CookHeader.h"

// 전역 변수 선언 부분 
Array <string> katok;
int sel_num = -1; // 1: 추가, 2: 삽입, 3: 삭제, 4: 종료

// 함수 선언 부분
void add_data(string data) {
	katok.push_back("None");
	int kLen = len(katok);
	katok[kLen - 1] = data;
}

void insert_data(int position, string data) {
	if ((position < 0) || (position > len(katok))) {
		println("데이터를 삽입할 범위를 벗어났습니다.");
		return;
	}

	katok.push_back("None");
	int kLen = len(katok);

	for (int i = kLen - 1; i > position; i--) {
		katok[i] = katok[i - 1];
		katok[i - 1] = "None";
	}

	katok[position] = data;
}

void delete_data(int position) {
	if ((position < 0) || (position > len(katok))) {
		println("데이터를 삭제할 범위를 벗어났습니다.");
		return;
	}

	int kLen = len(katok);
	katok[position] = "None"; // 데이터 삭제

	for (int i = position + 1; i < kLen; i++) {
		katok[i - 1] = katok[i];
		katok[i] = "None";
	}

	del(katok, kLen - 1);
}

// 메인 코드
int main() {

	string data;
	int pos;

	while (sel_num != 4) {
		input(sel_num, "선택하세요(1: 추가, 2: 삽입, 3: 삭제, 4: 종료)--> ");

		switch (sel_num) {
		case 1:
			input(data, "추가할 데이터--> ");
			add_data(data);
			printArray(katok);
			break;
		case 2:
			input(pos, "삽입할 위치--> ");
			input(data, "삽입할 데이터--> ");
			insert_data(pos, data);
			printArray(katok);
			break;
		case 3:
			input(pos, "삭제할 위치--> ");
			delete_data(pos);
			printArray(katok);
			break;
		case 4:
			printArray(katok);
			return 0;
		default:
			println("1~4 중 하나를 입력하세요.");
			continue;
		}
	}
}