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

Нарисовать квадрат

21.07.2010, 13:45. Показов 47391. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача
Написать программу, которая выводит на экран - следующую фигуру:

Code
1
2
3
4
5
6
7
8
*************
*           *
*           *
*           *
*           *
*           *
*           *
*************
(квадрат)

ширина и высота фигуры задаются пользователем с клавиатуры.

решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
void main()
{
int a,b;
cout<<"Vvedite visotu:\n";
cin>>a;
cout<<"Vvedite IIIupuHy:\n";
cin>>b;
 
for(int c=1;c<=a;c++)
    {
  cout<<" ";
 
    for(int i=1;i<=b;i++)
        {
            cout<<"*";
        }
    }
cout<<"\n\n";
 
}



В чем ошибки


Заранее спасибо

 Комментарий модератора 
Используйте BB-коды для оформления темы
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.07.2010, 13:45
Ответы с готовыми решениями:

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

Нарисовать квадрат циклом while
Нужно нарисовать квадрат типа: /* ***** * * * * * * ***** */

Нарисовать квадрат из звездочек
int N; cin &gt;&gt; N; for (int i=0;i&lt;=N;i++) for (int j=0;j&lt;=N;j++) { if...

9
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
21.07.2010, 13:55
Внутри 2-ого цикла должен быть переход на следующую строку:
C++
1
cout<<"*"<<endl;
ЗЫ: Читаем правила форума (Оформление кода).
0
1 / 1 / 0
Регистрация: 21.07.2010
Сообщений: 11
21.07.2010, 14:00  [ТС]
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>
using namespace std;
void main()
{
int a,b;
cout<<"Vvedite visotu:\n";
cin>>a;
cout<<"Vvedite IIIupuHy:\n";
cin>>b;
 
for(int c=1;c<=a;c++)
    {
  cout<<" ";
 
    for(int i=1;i<=b;i++)
        {
            cout<<"*"<<endl;
            
        }
    }
cout<<"\n\n";
 
}
Миниатюры
Нарисовать квадрат  
1
21 / 21 / 3
Регистрация: 12.07.2010
Сообщений: 27
21.07.2010, 14:04
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
#include <iostream>
using namespace std;
void main()
{
int a,b;
cout<<"Vvedite visotu:\n";
cin>>a;
cout<<"Vvedite IIIupuHy:\n";
cin>>b;
 
for (int i = 1; i <= a; i++)
{
    if (i == 1 || i == a)
    for(int c = 1; c <= b; c++) cout << "*";
    else
    {
        cout << "*";
        for (int c = 1; c <=(b-2); c++) cout << " ";
        cout << "*";
 
    }
 
    cout << "\n";
 
}
 
}
1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
21.07.2010, 14:25
Где-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//после ввода данных
int tmp=b; // копируем ширину, она нам понадобиться
for(int i=0;i<a;i++){
   if((i==0)||(i==(a-1))){
      while(tmp--)
         cout<<"*";
      tmp=b;}
   else {
      cout<<"*";
        while((tmp--)-2)
            cout<<" ";
      tmp=b;
      cout<<"*";}
}
Добавлено через 2 минуты
опоздал...
у нас с SS_47 логика решения похожая)
2
ниначмуроФ
 Аватар для PointsEqual
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
21.07.2010, 19:41
Когда то делал в виде класса. +размер квадрата меняется по нажатию клавиш. Может пригодится.

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <iostream>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
class cRectangle{
    public:
    cRectangle();
    ~cRectangle();
    void Rect(char h_symb, char v_symb, int init_x, int init_y, int h_symb_count, int v_symb_count);
    void DisplayServiceInf()const;
    int IncHor(int dx);
    int IncVert(int dy);
    int DecHor(int dx);
    int DecVert(int dy);
 
    private:
    COORD a;
    HANDLE console;
    int step;
};
 
cRectangle::cRectangle(): step(1){
}
 
cRectangle::~cRectangle(){
}
 
void cRectangle::Rect(char h_symb, char v_symb, int init_x, int init_y, int h_symb_count, int v_symb_count){
    console=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(console,2|10);
 
    a.X=init_x;
    a.Y=init_y; //верх горизонт
    int i=0;
    while (i<h_symb_count){
        SetConsoleCursorPosition(console,a);
        cout<<h_symb;
        a.X++;
        i++;
    }
 
    a.X=init_x;
    a.Y=init_y+v_symb_count; //няжняя горизонт
    i=0;
    while (i<h_symb_count){
        SetConsoleCursorPosition(console,a);
        cout<<h_symb;
        a.X++;
        i++;
    }
 
    a.Y=init_y; //верт правая
    i=0;
    while (i<v_symb_count+1){
 
        SetConsoleCursorPosition(console,a);
        cout<<v_symb;
        a.Y++;
        i++;
    }
 
    a.X=init_x;
    a.Y=init_y; //верт левая
    i=0;
    while (i<v_symb_count+1){
 
        SetConsoleCursorPosition(console,a);
        cout<<v_symb;
        a.Y++;
        i++;
    }
}
 
void cRectangle::DisplayServiceInf()const{
    cout<<"1:   inc_width"<<endl;
    cout<<"2:   inc_height"<<endl;
    cout<<"3:   dec_width"<<endl;
    cout<<"4:   dec_height"<<endl;
    cout<<"ESC: exit"<<endl;
}
 
int cRectangle::IncHor(int dx){
    dx+=step;
    return dx;
}
 
int cRectangle::IncVert(int dy){
    dy+=step;
    return dy;
}
 
int cRectangle::DecHor(int dx){
    dx-=step;
    return dx;
}
 
int cRectangle::DecVert(int dy){
    dy-=step;
    return dy;
}
 
int main()
{
    cRectangle Line;
    char h_symb='.';
    char v_symb='.';
    int init_x=2, init_y=8, dx=5, dy=5, shag=1, name_button=32;
    while (true){
        Line.DisplayServiceInf();
        Line.Rect(h_symb, v_symb, init_x, init_y, dx, dy);
        name_button=getch();
        if (name_button=='1') dx=Line.IncHor(dx);
        if (name_button=='2') dy=Line.IncVert(dy);
        if (name_button=='3') dx=Line.DecHor(dx);
        if (name_button=='4') dy=Line.DecVert(dy);
        if (name_button==27) break;
        system ("cls");
    }
    return 0;
}
1
34 / 34 / 8
Регистрация: 07.06.2010
Сообщений: 118
21.07.2010, 20:26
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main()
{
    int w,h;
    cout<<"Enter a width : ";
    cin>>w;
    cout<<"Enter a height : ";
    cin>>h;
    for(int i=0;i<h;i++)
    {
        for(int j=0;j<w;j++)
        {
            if((i>=1 && i<=h-2)&&(j>=1 && j<=w-2))
                cout<<" ";
            else
                cout<<"*";
        }
        cout<<endl;
    }
    return 0;
}
1
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 19
29.03.2015, 23:06
Здравствуйте, Я хотел у Вас спросить. Дело в том, что я тоже проходил циклы и так и не понял как рисовать используя циклы, не могли бы Вы мне объяснить, как вы реализовали то, что за счет использования FOR программа нарисовала квадрат? Я просто даже не представляю как у Вас это получилось...
0
2 / 2 / 2
Регистрация: 05.06.2016
Сообщений: 15
05.06.2016, 13:05
C++
1
2
3
4
5
6
7
8
9
    int w=8, h=6;
    //cin >> w >> h;
 
    for (short i = 0; i < h; i++)
    {
    for (short j = 0; j < w; j++)
        (i == 0 || i == h - 1 || j == 0 || j == w - 1) ? cout << "*" : cout << " ";
    cout << endl;
    }
0
 Аватар для Stitch Igorek
47 / 47 / 31
Регистрация: 02.04.2016
Сообщений: 312
05.06.2016, 13:22
Цитата Сообщение от Clawhammer91 Посмотреть сообщение
Я просто даже не представляю как у Вас это получилось...
все очень просто - например строки
C++
1
2
3
4
cout << '*';
cout << '*';
cout << '*';
cout << '*';
- 4 вывода одной и той же звездочки можно написать так
C++
1
2
3
4
for (int i = 0; i < 4; i++)
{
     cout << '*';
}
результат и в первом и втором случае одинаков, но в первом случае мы руками написали 4 раза вывод звездочки, а во втором мы поставили цикл, который рисует звездочки пока переменная i удовлетворяет условие i < 4.

Добавлено через 4 минуты
Все таки цикл while проще в понимании в этом смысле
C++
1
2
3
4
5
6
int i = 0;
while(i < 4)
{
     cout << '*';
     i = i + 1;
}
то же самое что и с циклом for, но попонятнее для понимания.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.06.2016, 13:22
Помогаю со студенческими работами здесь

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

Графика.Как нарисовать квадрат?
Собственно вопрос в теме...как нарисовать простейий квадрат с помощью линий

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

Нарисовать квадрат заданного размера
Напишите программу, которая читает размер стороны квадрата и затем печатает звездочками и пробелами пустой квадрат заданного размера. Ваша...

Нарисовать и залить чёрным цветом квадрат
приведите пример кода (рисовать &lt;windows.h&gt;) p.s искал, пытался вставить в свой код и чот не работает, с остальными фигурами проблемм...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru