Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/40: Рейтинг темы: голосов - 40, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 11.07.2015
Сообщений: 1

Нарисовать звездочками квадрат в квадрате в С++

12.07.2015, 19:07. Показов 7399. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу разобраться как циклами for нарисовать звездочками (*) квадрат в квадрате.
Что-то такого вида:

**********
* *
* ******* *
* * * *
* * * *
* * * *
* * * *
* ******* *
* *
**********

Ну в общем чтоб один внутри другого был, но что-то у меня никак...
заранее спасибо и всем добра!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2015, 19:07
Ответы с готовыми решениями:

Нарисовать квадрат звездочками
Нужно сделать цикл for, чтобы он рисовал квадрат звездочкой "*", должно получиться что-то типа такого ******** ******** * ****** ...

Нарисовать квадрат в квадрате, в квадрате и так далее
Прошу помощи, мне подкинули задачку. Необходимо вывести на экран вот это: * * * * * * * * * * * * * * * * * *...

Нарисовать квадрат в квадрате
Нарисовать квадраты друг в друге используя рекурсию. Помогите пожалуйста.

3
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
12.07.2015, 20:59
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
void out_square(std::ostream& _o, int num, int cnt){
    bool chk;
    int  len = num - 1;
    for(int i = 0; i < num; ++i){
        chk = (i < cnt || i > len-cnt);
        for(int j = 0; j < num; ++j){
            if((j < cnt) || (j > len-cnt) || chk)
                _o << '*';
            else
                _o << ' ';
        }
        _o << std::endl;
    }
    _o.flush();
}
 
 
int main(void){
    out_square(std::cout, 12, 2);
    return 0;
}
Результат работы кода
0
 Аватар для Gelo123321
22 / 22 / 8
Регистрация: 05.01.2012
Сообщений: 282
12.07.2015, 21:44
Gonzovision, примитивный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Рисование квадрата символами в консоли. ------------------------------------
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    char rects[6][6] = { { '*', '*', '*', '*', '*', '*' },
                         { '*', ' ', ' ', ' ', ' ', '*' },
                         { '*', ' ', '*', '*', ' ', '*' },
                         { '*', ' ', '*', '*', ' ', '*' },
                         { '*', ' ', ' ', ' ', ' ', '*' },
                         { '*', '*', '*', '*', '*', '*' } };
    // Рисуем фигуры в окне консоли. ------------------------------------------
    for (int i = 0; i < 6; ++ i) {
        for (int j = 0; j < 6; ++j) {
            cout << rects[j][i] << ' ';
        }
        cout << '\n';
    }
 
    _getch();
    return 0;
}
Добавлено через 43 минуты
Вариант получше:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Рисование квадрата символами в консоли. ------------------------------------
#include <iostream>
#include <conio.h>
 
using namespace std;
// Фукция, которая рисует квадраты на окне консоли. ---------------------------
// PEN - символ, которым будут нарисованы квадраты. ---------------------------
// SIZE_RECT1 - размер внешнего квадрата. -------------------------------------
// SIZE_RECT2 - размер внутреннего квадрата относительно сторон внешнего. -----
// Например, если SIZE_RECT1 = 10, а SIZE_RECT2 = 2, то: размер внешнего = 10,
// размер внутреннего = 10 - 2 * 2 = 6. ---------------------------------------
void draw(char PEN, int SIZE_RECT1, int SIZE_RECT2) 
{
    for (int i = 0; i < SIZE_RECT1; ++i) {
        for (int j = 0; j < SIZE_RECT1; ++j) {
                // Рисованые внешнего квадрата. -------------------------------
            if ((i == 0) || (i == SIZE_RECT1 - 1) ||
                (j == 0) || (j == SIZE_RECT1 - 1) ||
                // Рисование внутреннего квадрата. ----------------------------
                ((i == SIZE_RECT2) && 
                    (j >= SIZE_RECT2 && j <= SIZE_RECT1 - SIZE_RECT2 - 1)) ||
                ((i == SIZE_RECT1 - SIZE_RECT2 - 1) &&
                    (j >= SIZE_RECT2 && j <= SIZE_RECT1 - SIZE_RECT2 - 1)) ||
                ((j == SIZE_RECT2) &&
                    (i >= SIZE_RECT2 && i <= SIZE_RECT1 - SIZE_RECT2 - 1)) ||
                ((j == SIZE_RECT1 - SIZE_RECT2 - 1) && 
                    (i >= SIZE_RECT2 && i <= SIZE_RECT1 - SIZE_RECT2 - 1))) 
                cout << PEN;
            else cout << ' ';
        }
        cout << '\n';
    }
}
 
int main()
{
    draw('*', 12, 4);
 
    _getch();
    return 0;
}

Не по теме:

Однако мне кажеться, что куча исключений и проверок в if'е - издевательсво. Есть у кого идеи, как улучшить это?

0
42 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 8
12.07.2015, 23:04
Gelo123321,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void draw(const int size) {
    if(size <= 0) return;
 
    if(size < 5) {
        for(int i=0; i < size; ++i) {
            for(int j=0; j < size; ++j) {
                std::cout << "*";
            }
            std::cout << std::endl;
        }
        return;
    }
 
 
    for(int i=0; i < size; ++i) {
        for(int j=0; j < size; ++j) {
            if(i == 0 || i == 1) {
                std::cout << "*";
                continue;
            }
 
            if(i == size-1 || i == size-2) {
                std::cout << "*";
                continue;
            }
 
            if(j == 0 || j == 1) {
                std::cout << "*";
                continue;
            }
 
            if(j == size-1 || j == size-2) {
                std::cout << "*";
                continue;
            }
 
            std::cout << "5";
        }
        std::cout << std::endl;
    }
 
}
Добавлено через 1 минуту
Нормальное издевательство Главное чтобы читалось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2015, 23:04
Помогаю со студенческими работами здесь

Квадрат в квадрате
Здравствуйте! Помогите разобраться с вопросом по школьной алгебре. Вопрос на примере &quot;формулы сокращенного умножения&quot;....

Нарисовать треугольник звездочками
1) Write a program that prints the screen below. Conditions: Only use one printf(&quot;*&quot;) or writeln(“*”). And one printf(&quot;...

Нарисовать прямоугольник звездочками
Нарисуйте следующие фигуры ******** ******** ******** ******** ******** ******** ******** ******** параметризовать длиной...

Нарисовать круг в консоле звездочками
Нарисовать круг в консоле звездочками(*), при этом в начале задать радиус круга. Заранее спасибо.

Нарисовать окружность в консоле звездочками
Помогите написать программу, которая рисует в консоле круг любым символом, например звездочками. Радиус круга задается заранее, а так же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru