Отобразить прямоугольник в массиве С++

292
08 мая 2017, 02:38

Есть карта

char** map(int n, int x, int y, int a, int b){
char** map = new char*[n];
for (int i = 0; i < n; i++)
{
    map[i] = new char[n];
}
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < n; j++)
    {
        map[i][j] = '-';
    }
}
return map;    }

теперь нужно отобразить на карте дав начальную точку x,y, ширину a и длину b прямоугольника

int main(){

int n = 15;
char** mapArr = map(n, 7, 7, 7, 9);

for (int i = 0; i < n; i++)
{
    for (int j = 0; j < n; j++)
    {
        cout << mapArr[i][j] << " ";
    }
    cout << endl;
}

} и отобразить. Пробовал по обычному методу от сюда но дав циклу начальную точку не смог отобразить возможно это так и не работает

Answer 1

Если я правильно понял вопрос, то нужно просто добавить условие в функцию map:

char** map(int n, int x, int y, int a, int b)
{
    char** map = new char*[n];
    for (int i = 0; i < n; i++)
    {
        map[i] = new char[n];
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i >= y && i < y + b && j >= x && j < x + a)
            {
                map[i][j] = '*';
            }
            else
            {
                map[i][j] = '-';
            }
        }
    }
    return map;
}

UPDATE

Если нужно вывести только рамку прямоугольника, то можно прописать условия для каждой стороны:

for (int i = 0; i < n; i++)
{
    for (int j = 0; j < n; j++)
    {
        if ((i >= y && i < y + b && j == x) ||
            (i >= y && i < y + b && j == x + a - 1) ||
            (j > x && j < x + a && i == y) ||
            (j > x && j < x + a && i == y + b - 1))
        {
            map[i][j] = '*';
        }
        else
        {
            map[i][j] = '-';
        }
    }
}
READ ALSO
Перекодирование файла из Windows ANSI кодировки в utf-8

Перекодирование файла из Windows ANSI кодировки в utf-8

Появилась такая проблема во время разработки программы на C++Программа должна прочитать содержимое текстового файла input

288
C++ Разбиение строки на вектор слов

C++ Разбиение строки на вектор слов

Есть файл со строками разной длиныСлова в котором, разделены запятыми

344
Перевод программы с Pascal ABC на C++

Перевод программы с Pascal ABC на C++

Программа на паскале рабочаяНашла как на С++ будут вводиться и выводится матрицы и вектора, но как всё это объеденить я не знаю

1065