C++ программа повторяется

Как всегда проблемы. Вот код:

#include <iostream>
#include <string>
#include <stdlib.h>
#include <limits>

using namespace std;

int main() {
string field = "*";                                                                 //empty space
int size = 6;                                                                       //size of matrix
int change;

cout << "Do you want to change size of field? (default is 6x6)";
cout << endl << "- - (1. Yes. / 2. No.) - -" << endl << "> ";

cin >> change;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');

system("cls");

if (change == 1) {

    cout << "Please, enter size of area. (no less than four)" << endl << "> ";
    cin >> size;
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');

    if (size < 4) {
        system("cls");
        main();
    }
    else {
        system("cls");
    }
}

else if (change == 2) {
    system("cls");
}
else {
    system("cls");
    main();
}

system("color 03");

int right = size - 2;                                                               //variable for right side of the house
if (size >= 4) {
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {

            if ((j == 1 && i > 2 && i <= right) || (j == right && i > 2 && i <= right)) {
                field = "|";
            }

            else if (i == 1 && j == 1) {
                field = "/";
            }

            else if (i == 1 && j == right) {
                field = "\\";
            }

            else if ((j > 1 && j < right && i == right) || (j >= 1 && j <= right && i == 2)) {
                field = "_";
            }

            else if (j >= 2 && j < right && i == 1) {
                field = "-";
            }

            else {
                field = "*";
            }

            cout << field;
            cout << "   ";
            //cout << " [" << i << "; " << j << "]  ";
        }
        cout << endl << endl;
    }                                                                                   //program prints a matrix
}

cout << endl << endl << endl;

return 0;
}

Код создан рисовать домик. И это происходит. Но если выбирать размер - беда. Во-первых, если вводить с самого начала в Do you want to change size of field? (default is 6x6) не 1 или 2, то потом он нарисует сразу несколько матриц. Во-вторых, та же проблема с выбором размера. Если пишу букву - появляется лишний endl, если цифру меньше 4-х, то сначала матрица, размер которой больше 4х4, а потом в обратном порядке все те матрицы, размер которых был меньше. Я уже много чего перепробовал, но оно как-то всё криво.


Ответы (0 шт):