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

Фигуры из символов

23.11.2017, 01:32. Показов 5205. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, которая записывает длину одной из сторон квадрата, и после рисует его используя символ звездочки (*). Далее задача была усложнена, и помимо ввода длины стороны, нужно выбрать одну из трёх фигур. 1 - квадрат (пустой), 2 - треугольник (заполненный), 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
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int n, i, j;
    cout << "Vvedite dlinu storony: ";
    cin >> n; 
    {
        for (i = 0; i < n; i++)
        {
            if (i == 0 || i == n - 1)
            {
                for (j = 0; j < n; j++)
                {
                    cout << "*";
                }
            }
            else
            {
                cout << "*";
                for (j = 0; j < n - 2; j++)
                {
                    cout << " ";
                }
                cout << "*";
            }
            cout << endl;
        }
    }
    _getch();
}
Треугольник тоже не составил труда:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    int n, i, j;
    cout << "Vvedite dlinu storony: ";
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            cout << '*';
        }
        cout << endl;
    }
    _getch();
}
Вопросы возникают при создании параллелограмма в такой же манере, а так же как объединить эти два куска с третьим, что бы при вводе числа после ввода длины выводило при 1 - квадрат, при 2 - треугольник, при 3 - параллелограмм.
Заранее благодарю за помощь!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2017, 01:32
Ответы с готовыми решениями:

Вводить название фигуры, выводить формулу для вычисления площади этой фигуры
Вводить название фигуры (треугольник, квадрат, ромб, прямоугольник) выводить формулу для вычисления площади этой фигуры.

Программа вычисления местонахождения точки относительно фигуры (лежит ли точка внутри, на контуре или вне фигуры)
Нужно написать программу вычисления местонахождения точки относительно фигуры(лежит ли данная точка внутри неё, на контуре или вне фигуры)....

Наложить чертёж плоской фигуры на проекцию этой фигуры
Стоит задача наложить чертёж земельного участка на фотографию этого участка. Участок обозримого размера и целиком влазит в кадр. Таким...

5
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
23.11.2017, 07:11
Цитата Сообщение от LaSTiqq Посмотреть сообщение
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
24
#include <iostream>
 
//параллелограмм (пустой)
void parallelogram(std::ostream& _out, int w, int h, char c = '*'){
    int ox = h - 1;
    for(int y = 0; y < h; ++y, --ox){
        for(int x = 0; x < w + ox; ++x){
            if((x < ox) || (y > 0 && y < h - 1) && (x > ox) && (x < w + ox - 1))
                _out << ' ';
            else if(!y || (y == h - 1) || (x == ox) || (x == w + ox - 1))
                _out << c;
        }
        _out << std::endl;
    }
    _out << std::endl;
}
 
int main(void){
    parallelogram(std::cout,  8, 4);
    parallelogram(std::cout, 20, 8);
    parallelogram(std::cout, 56, 9);
    std::cin.get();
    return 0;
}
0
3 / 3 / 1
Регистрация: 18.11.2017
Сообщений: 95
23.11.2017, 15:49  [ТС]
Геомеханик, я могу попросить привести это к тому стилю кода, который писал выше? Больно много времени убью на самостоятельный разбор, что к чему...
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
23.11.2017, 18:43
Цитата Сообщение от LaSTiqq Посмотреть сообщение
я могу попросить привести это к тому стилю кода, который писал выше?
Это и так в твоём же стиле кода, разве что скобку { попереставлять и std::cout прописать непосредственно в функции, а не передавать в неё как аргумент
0
3 / 3 / 1
Регистрация: 18.11.2017
Сообщений: 95
23.11.2017, 23:32  [ТС]
Собственно только сейчас вообще обратил внимание, что в коде вроде как даже и cin толком нету т.е. рисуется параллелограмм, только с заданным размером самим кодом, а мне как бы надо, что бы длину стороны вводил пользователь, или я тупой воробушек и не понимаю всей хитрости этого кода.
На данном этапе обучения void, &&, std::, return и пр. мне должно быть не знакомо, хоть я сам и могу знать, что к чему, но в итоге мне это выльется в кучу проблем с преподавателем, который будет придираться к каждому элементу того синтаксиса, что я не проходил конкретно у него.
Если я не прав, извиняюсь, но для меня действительно в данную минуту будет проблематично привести самому этот код к той манере, которая задана моим ВУЗом... К тому же не прокомментирован вопрос о том, как объединить все три кода фигур в один, и выводилась именно та фигура, которую будет выбирать пользователь.

Добавлено через 3 часа 9 минут
Вопрос не решен.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
24.11.2017, 02:44
Лучший ответ Сообщение было отмечено LaSTiqq как решение

Решение

Цитата Сообщение от LaSTiqq Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
       for (i = 0; i < n; i++)
        {
            if (i == 0 || i == n - 1)
            {
                for (j = 0; j < n; j++)
                {
                    cout << "*";
                }
            }
            else
            {
                cout << "*";
                for (j = 0; j < n - 2; j++)
                {
                    cout << " ";
                }
                cout << "*";
            }
            cout << endl;
        }
На твоём бы месте вынес верхнюю и нижнюю стороны в отдельные циклы, так более производительно будет:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
       for (j = 0; j < n; j++)
       {
              cout << "*";
       }
       cout << endl;
 
       for (i = 1; i < (n-1); i++)
       {
             cout << "*";
             for (j = 0; j < (n - 2); j++)
             {
                 cout << " ";
             }
             cout << "*" << endl;
       }
       for (j = 0; j < n; j++)
       {
              cout << "*";
       }
       cout << endl;
кусок кода с 1 по 5 строку просится, чтоб его выполнили в виде отдельной функции.

А параллелограмм - это треугольник из пробелов вместо звёздочек, вправо от которого рисуется квадрат.
То есть
C++
1
2
3
4
        for (int j = 0; j <= i; j++)
        {
            cout << ' ';
        }
добавить перед cout << "*";у вертикальных рёбер параллелограмма. Ну и + подумать для нижнего/верхнего ребра, что там из пробелов ставить.

Добавлено через 2 минуты
Цитата Сообщение от LaSTiqq Посмотреть сообщение
нужно выбрать одну из трёх фигур
оператор switch уже прошли?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.11.2017, 02:44
Помогаю со студенческими работами здесь

Передвижение фигуры при клике на область внутри фигуры
Есть прямоугольник 100 на 50. При удерживании мышки фигура передвигается как карта в пасьянсе. При отпуске фиксируется. Хотел бы...

Как отрисовывать линию, соединяющую две фигуры, так, чтобы она не пересекала эти фигуры и другие линии
Подскажите, пожалуйста, как отрисовывать линию, соединяющую две фигуры, так, чтобы она не пересекала эти фигуры и другие соединительные...

Дана строка символов. Подсчитать общее число вхождений символов +, -, *, / в строку. Произвести обмен символов + и -.
помогите, пожалуйста.

Строку из n символов распечатать по m символов. Если в последней строке нет m символов, то ее не печатать
Строку из n символов распечатать по m символов в строке. Если в последней строке нет m символов, то ее не печатать.

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru