Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/55: Рейтинг темы: голосов - 55, средняя оценка - 4.51
 Аватар для kalonord
28 / 28 / 5
Регистрация: 27.01.2014
Сообщений: 784

Нарисовать квадрат циклом while

31.08.2015, 12:22. Показов 11678. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно нарисовать квадрат типа:
C++
1
2
3
4
5
6
7
8
9
/*
 
*****
*     *
*     *
*     *
*****
 
*/
Т.е. если пользователь ввёл число 5, будет по 5 звездочек на сторону. Внутренне квадрат пуст. Нужно сделать с помощью цикла while. Я видел подобные темы, прошу, не пишите с помощью for, и так голова не варит. Заранее спасибо.

Добавлено через 56 секунд

Не по теме:

С квадратом беда, но думаю, что суть понятна :)

0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.08.2015, 12:22
Ответы с готовыми решениями:

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

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

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

10
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
31.08.2015, 12:44
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
#include <iostream>
 
int main() {
    std::cout << "n = ";
    int n;
    std::cin >> n;
 
    int i = 1;
    
    while(i++<=n)
        std::cout << '*';
    std::cout << std::endl;
 
    int j = 2;
    while(j++ < n) {
        i = 0;
        while(i < n ) {
            std::cout << (i == 0 || i == n-1 ? '*' : ' ');
            ++i;
        }
        std::cout << std::endl;
    }   
    
    if(n > 1) {
        i = 1;
        while(i++ <= n)
            std::cout << '*';
        std::cout << std::endl;
    }
 
    system("pause");
    return 0;
}
1
 Аватар для anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
31.08.2015, 12:46
kalonord, НАПИТКИ ПОПРОЩЕ )
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
#include<iostream>
 
using namespace std;
 
int main(){
    char ch=2;// здесечки рисуешь любой литерал(1,2,3,4,5...)
    int i=0,j=0,n;// и будут тебе масти смайлики или чего хочешь
    cin>>n;
 
    while(i<n){
        while(j<n){
        if(i==0||i==n-1||j==0||j==n-1)
        cout<<ch;
        else
        cout<<" ";
        j++;            
        }
        cout<<endl;
        j=0;
     i++;
    }
 
    return 0;
}
1
 Аватар для kalonord
28 / 28 / 5
Регистрация: 27.01.2014
Сообщений: 784
31.08.2015, 12:49  [ТС]
ture, ничего не понял, потом постараюсь разобрать, спасибо.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от anti-k Посмотреть сообщение
НАПИТКИ ПОПРОЩЕ )
Напитки проще, эффект тот же? Эт хорошо. Тоже потом разберу, спасибо.

0
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 16
31.08.2015, 12:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using namespace std;
 
int main()
{
   int n,i=0,j=0;
   cin >> n;
   cout << endl;
   i=n;
   while(i) {
        cout << endl;
        if (i==1 || i==n) {
        j=n;
        while (j--) {cout << "*";} } else {
                cout << "*";
                j=n-2;
                while(j--) cout << " ";
                cout << "*";
                }
 
    i--;
    }
   return 0;
}
0
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
31.08.2015, 12:56
А чем цикл for так не угодил?
1
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
31.08.2015, 12:57
Цитата Сообщение от kalonord Посмотреть сообщение
ture, ничего не понял, потом постараюсь разобрать, спасибо.
У меня тоже тяжёлое утро. Поэтому код через опу пока идет.
1
31.08.2015, 12:59  [ТС]

Не по теме:

Цитата Сообщение от mymedia Посмотреть сообщение
А чем цикл for так не угодил?
А я его не проходил, а уж тем более не применял, понятно, что там почти одно и то же, но не родной это for мне, пока что :)

0
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
31.08.2015, 13:06
Цитата Сообщение от kalonord Посмотреть сообщение
но не родной это for мне
А жаль. Там ничего сложно нету. Так пройдите же его прямо сейчас!

Такой код
C++
1
for (E1; E2; E3) E4;
эквивалентен
C++
1
E1; while (E2) { E4; E3; }
при условии, что в E4 нету инструкции continue.
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
01.09.2015, 10: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
28
29
30
31
#include <iostream>
 
const int SQUARE_SIZE = 10;
const int LIMIT = SQUARE_SIZE - 2;
const int HLINE_LIMIT = LIMIT * 2;    // иначе будет не квадрат, а прямоугольник
const char SYMBOL = 'W';    // любой символ, которым будем рисовать стенки квадрата
 
void show_line(char ch)
{
    int counter = 0;
    std::cout << SYMBOL;
    while (counter < HLINE_LIMIT)
    {
        std::cout << ch;
        ++counter;
    }
    std::cout << SYMBOL << '\n';
}
 
int main()
{
    show_line(SYMBOL);
    int counter = 0;
    while (counter < LIMIT)
    {
        show_line(' ');
        ++counter;
    }
    show_line(SYMBOL);
    return 0;
}
Добавлено через 5 минут

В принципе, можно убрать две константы, если устраивает прямоугольный вариант
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
#include <iostream>
 
const int LIMIT = 8;
const char SYMBOL = 'W';
 
void show_line(char ch)
{
    int counter = 0;
    std::cout << SYMBOL;
    while (counter < LIMIT)
    {
        std::cout << ch;
        ++counter;
    }
    std::cout << SYMBOL << '\n';
}
 
int main()
{
    show_line(SYMBOL);
    int counter = 0;
    while (counter < LIMIT)
    {
        show_line(' ');
        ++counter;
    }
    show_line(SYMBOL);
    return 0;
}


P.S. В общем, идеальный квадрат произвольными символами получить не реально. Если только псевдографикой.

Добавлено через 17 часов 13 минут
kalonord, можно дать возможность пользователю выбрать размер "квадрата", символ, которым будем рисовать квадрат и символ, которым будем заполнять квадрат:
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
#include <iostream>
 
void show_line(char borderSymbol, char spaceSymbol, int limit)
{
    std::cout << borderSymbol;
    int counter = 0;
    while (counter < limit)
    {
        std::cout << spaceSymbol;
        ++counter;
    }
    std::cout << borderSymbol << '\n';
}
 
int main()
{
    int sqareSize;
    std::cout << "Please enter the square size: ";
    std::cin >> sqareSize;
    int sqareSizeWithoutBorder = sqareSize - 2;
    char borderSymbol;
    std::cout << "Please enter the border character: ";
    std::cin >> borderSymbol;
    char spaceSymbol;
    std::cout << "Please enter the space character: ";
    std::cin >> spaceSymbol;
    show_line(borderSymbol, borderSymbol, sqareSizeWithoutBorder);
    int counter = 0;
    while (counter < sqareSizeWithoutBorder)
    {
        show_line(borderSymbol, spaceSymbol, sqareSizeWithoutBorder);
        ++counter;
    }
    show_line(borderSymbol, borderSymbol, sqareSizeWithoutBorder);
    return 0;
}
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
01.09.2015, 11:38
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>
#include <iomanip>
 
 
 
int main()
{
    int n = 0 ;
    std::cin >> n ;
    int width = n ;
    if ( n > 0 )
    {
        std::cout << std::setw(width) << std::setfill('*') << "" << std::endl ;
        while ( (n-- - 2) > 0 )
        {
            std::cout << std::setw(1) << std::setfill('*') << ""
                << std::setw(width-2) << std::setfill(' ') << ""
                << std::setw(1) << std::setfill('*') << "" << std::endl ;
        }
        if ( n == 1 )
            std::cout << std::setw(width) << std::setfill('*') << "" << std::endl ;
    }
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.09.2015, 11:38
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru