Форум программистов, компьютерный форум CyberForum.ru

Нарисовать квадрат - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.98
Wera
1 / 1 / 0
Регистрация: 21.07.2010
Сообщений: 11
21.07.2010, 13:45     Нарисовать квадрат #1
Задача
Написать программу, которая выводит на экран - следующую фигуру:

Код
*************
*           *
*           *
*           *
*           *
*           *
*           *
*************
(квадрат)

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

решение:
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-коды для оформления темы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
21.07.2010, 13:55     Нарисовать квадрат #2
Внутри 2-ого цикла должен быть переход на следующую строку:
C++
1
cout<<"*"<<endl;
ЗЫ: Читаем правила форума (Оформление кода).
Wera
1 / 1 / 0
Регистрация: 21.07.2010
Сообщений: 11
21.07.2010, 14:00  [ТС]     Нарисовать квадрат #3
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";
 
}
Миниатюры
Нарисовать квадрат  
SS_47
21 / 21 / 1
Регистрация: 12.07.2010
Сообщений: 27
21.07.2010, 14:04     Нарисовать квадрат #4
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";
 
}
 
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.07.2010, 14:25     Нарисовать квадрат #5
Где-то так:
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 логика решения похожая)
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
21.07.2010, 19:41     Нарисовать квадрат #6
Когда то делал в виде класса. +размер квадрата меняется по нажатию клавиш. Может пригодится.

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;
}
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
21.07.2010, 20:26     Нарисовать квадрат #7
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;
}
Clawhammer91
0 / 0 / 0
Регистрация: 22.03.2015
Сообщений: 17
29.03.2015, 23:06     Нарисовать квадрат #8
Здравствуйте, Я хотел у Вас спросить. Дело в том, что я тоже проходил циклы и так и не понял как рисовать используя циклы, не могли бы Вы мне объяснить, как вы реализовали то, что за счет использования FOR программа нарисовала квадрат? Я просто даже не представляю как у Вас это получилось...
madfax
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 15
05.06.2016, 13:05     Нарисовать квадрат #9
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;
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2016, 13:22     Нарисовать квадрат
Еще ссылки по теме:

В центре экрана нужно нарисовать квадрат. А в нем еще 8 В целом должно получиться 9 квадратов. И нужно их покрасить в 3 разные цвета C++
Нарисовать квадрат на C++ (желательно для компилятора Dev C++) C++
C++ Нарисовать звездочками квадрат в квадрате в С++

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

Или воспользуйтесь поиском по форуму:
Stitch Igorek
 Аватар для Stitch Igorek
44 / 44 / 17
Регистрация: 02.04.2016
Сообщений: 300
Завершенные тесты: 1
05.06.2016, 13:22     Нарисовать квадрат #10
Цитата Сообщение от 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, но попонятнее для понимания.
Yandex
Объявления
05.06.2016, 13:22     Нарисовать квадрат
Ответ Создать тему
Опции темы

Текущее время: 12:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru