@apa_thy

Как написать цикл, чтобы рамка подбирала размер под текст на языке С++?

Я только начинаю с программированием и не совсем понимаю как написать программу, чтобы рамка подбирала размер под текст введенный пользователем. Но единственный момент, нужно написать так, чтобы были использованы символы ASCII (191, 192, 196, 217, 218).

Как должна выглядеть рамка с использованием символов ASCII :
62f15486e8d10448916771.png

Пример задания :
62f15337bef2c185889704.png

Объясните пожалуйста как она должна работать и как это нужно написать.
  • Вопрос задан
  • 532 просмотра
Пригласить эксперта
Ответы на вопрос 5
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
В практике современной разработки на C++ применяют libfmt или, у кого компилятор совсем новый, std::format:
fmt::print(
  "┌{0:─^{2}}┐\n"
  "│{1: ^{2}}│\n"
  "└{0:─^{2}}┘\n", "", "Hello, world!", 20);

┌────────────────────┐
│   Hello, world!    │
└────────────────────┘
Ответ написан
@12rbah
Сохраняете ваши строки отдельно, затем проверяете их длину, запоминаете самую большую(с учетом пробелов и тд), затем начинаете формировать вашу таблицу, всё нужно делать в одной строке. Заполняете первую строку звездочками, потом ставите \n, делаете отступ и вставляете строку с лабой ну и тд.
Ответ написан
Комментировать
@kaktak255
Первая строчка это целиком _______ или ----- (не знаю номер) . Вторую строчку начинаем с | + пробел(или два как лучше выглядит не знаю) и дальше к этой сточке добавляем текст, потом добавляем пробел + |
В конце заканчиваем сточкой с ________ или -----
А по поводу переноса. Если букв в строчке такое то количество остальные буквы пишем в следующую сточку.
Если последняя сточка не дотягивает до рамки, то тут надо считать с числом которое отвечает за перенос строки
И если будешь задавать такие вопросы то не научишься решать такие задачки.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Вот эти вот символы (191, 192, 196, 217, 218). лучше не использовать. Берите сразу Unicode в разделе BoxDrawing https://www.w3.org/TR/xml-entity-names/025.html

Что за душный душнило этот ваш преподаватель? Расскажите ему уже что на дворе 2022 год.
Ответ написан
Комментировать
Adamos
@Adamos
ДЛИНА = 0
ДЛЯ КАЖДОЙ строчки из введенных пользователем
  ЕСЛИ ее длина больше ДЛИНЫ - записать ее в ДЛИНУ

ВЫВЕСТИ "угол"
ЦИКЛ от 0 до ДЛИНА + 2  ВЫВЕСТИ "горизонтальную линию"
ВЫВЕСТИ "угол" и перевод строки
ДЛЯ КАЖДОЙ строки из введенных пользователем
  ВЫВЕСТИ "вертикальную линию", пробел, строку
  ЦИКЛ от 0 до (ДЛИНА - длина этой строки + 1) ВЫВЕСТИ пробел
  ВЫВЕСТИ "вертикальную линию" и перевод строки

Ну, и закрыть табличку аналогично началу.
ЦИКЛы можно заменить генерацией строк нужной длины.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы