
Другие языки программирования и технологии
вопрос по программированию с++
есть код который выводит прямоугольник с звездочек, нужно сделать чтоб он был внутри пустой, кто знает как решить это, помогите пожалуйста, заранее спасибо, смотрите фото


снизу и сверху сплошняком звездочки, а между ними cout<<*<<satw(какое-то расстояние) <<*;
Начнём с того, что в твоей исходной программе ширина в высота перепутаны местами. Потому рисуется прямоугольник, повёрнутый на 90 градусов. А дальше надо всего лишь проверять внутри цикла - лежит точка на границе, или внутри прямоугольника.
cin >> width >> height;
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
cout << y % (height -1) && x % (width - 1) ? ' ' : '*';
}
cout << endl;
}
cin >> width >> height;
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
cout << y % (height -1) && x % (width - 1) ? ' ' : '*';
}
cout << endl;
}
Программу сюда перепечатывай, а не пииводи скрин, иначе вместо корректировки ее надо писать с нуля.
вместо cout << "*"
cout << j % (height-1) ? ' ' : '*';
cout << j % (height-1) ? ' ' : '*';
#include < iostream >
#include < windows.h >
#include < iomanip >
using namespace std;
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
cout << "Введите размеры прямоугольника ";
int n, m;
for (;;)
{
cin >> n >> m;
if (cin.rdbuf()->in_avail() != 1 || n < 3 || m < 3)
{
cin.clear();
cin.ignore(cin.rdbuf()->in_avail(), '\n');
cout << "Ошибка при вводе. Повторите ";
}
else
break;
}
char c = '*';
for (unsigned u = 0; u < m; ++u)
{
cout << c;
}
cout << endl;
for (unsigned u = 0; u < n - 2; ++u)
{
cout << c << setw(m - 1) << c << endl;
}
for (unsigned u = 0; u < m; ++u)
{
cout << c;
}
cout << endl;
cin.get(); cin.get();
}

#include < windows.h >
#include < iomanip >
using namespace std;
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
cout << "Введите размеры прямоугольника ";
int n, m;
for (;;)
{
cin >> n >> m;
if (cin.rdbuf()->in_avail() != 1 || n < 3 || m < 3)
{
cin.clear();
cin.ignore(cin.rdbuf()->in_avail(), '\n');
cout << "Ошибка при вводе. Повторите ";
}
else
break;
}
char c = '*';
for (unsigned u = 0; u < m; ++u)
{
cout << c;
}
cout << endl;
for (unsigned u = 0; u < n - 2; ++u)
{
cout << c << setw(m - 1) << c << endl;
}
for (unsigned u = 0; u < m; ++u)
{
cout << c;
}
cout << endl;
cin.get(); cin.get();
}

Сергей Давыденко
Ограничивать нужно не тремя, а двумя. Прямоугольник получиться, но только без пустот...
ну, я незнаю, заменить звёздочку на пробел, а в экстренных случаях делать это не с первого (нулевого символа) и не по последний
Виктор Скляров
Заменить звёздочку на пробел можно, используя задачу положения курсора консоли в нужные координаты.
Похожие вопросы
- Вопрос по программированию
- Вопрос по программированию.
- Вопрос о программировании, литературе и математике.
- Вопрос по программированию и всему, что с ним связано.
- Здравствуйте, у меня вопрос по программированию.
- есть пару вопросов по программированию на С++
- Помогите с вопросом по программированию
- Вопрос по программированию С++
- Adobe Flash умер в конце 2020. Вопрос: язык программирования ActionScript также устарел, его бесполезно начинать учить?
- Почему в разделе "Программирование" 90% вопросов к программированию не как не относиться