Для написания цикла, чтобы рамка подбирала размер под текст, на языке C++ нужно использовать некоторые встроенные функции и обработку строк.
Ниже приведен пример кода для достижения этой цели:
#include <iostream> #include <string> // Функция для поиска наибольшей длины строки в массиве int наибольшая_длина_строки(const std::string строка[], int размер) { int наибольшая_длина = 0; for (int i = 0; i < размер; i++) { int текущая_длина = строка[i].size(); if (текущая_длина > наибольшая_длина) { наибольшая_длина = текущая_длина; } } return наибольшая_длина; } // Функция для вывода рамки вокруг строки void вывести_рамку(const std::string строка[], int размер) { int ширина_рамки = наибольшая_длина_строки(строка, размер) + 4; std::string горизонтальная_линия(ширина_рамки, '-'); std::cout << горизонтальная_линия << std::endl; for (int i = 0; i < размер; i++) { std::cout << "| " << строка[i]; int пробелы = ширина_рамки - строка[i].size() - 3; std::cout << std::string(пробелы, ' ') << " |" << std::endl; } std::cout << горизонтальная_линия << std::endl; } int main() { const std::string строка[] = { "Привет", "это", "пример" }; int размер = sizeof(строка) / sizeof(строка[0]); вывести_рамку(строка, размер); return 0; }
В этом примере мы используем две функции: наибольшая_длина_строки
для поиска наибольшей длины строки и вывести_рамку
для вывода рамки вокруг каждой строки.
Функция наибольшая_длина_строки
принимает массив строк и размер и возвращает наибольшую длину строки в массиве. Функция вывести_рамку
использует значение, возвращаемое наибольшая_длина_строки
, для определения ширины рамки и выводит рамку вокруг каждой строки массива.
Затем в основной функции main
мы создаем массив строк, передаем его в вывести_рамку
вместе с его размером, и выводим рамку. На выходе получим следующий результат:
--------- | Привет | | это | | пример | ---------
В этом примере программа автоматически подбирает размер рамки вокруг каждой строки, основываясь на самой длинной строке массива.