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, а потом в обратном порядке все те матрицы, размер которых был меньше. Я уже много чего перепробовал, но оно как-то всё криво.