Напишите программу, запрашивающую имя, фамилия, отчество и номер группы студента и выводящую введённые данные в следующем виде:
/* ********************************
* Лабораторная работа № NNN *
* Выполнил(а): ст. гр. XX-123 *
* Иванов Иван Иванович *
******************************** */
Необходимо, чтобы программа сама определяла нужную длину рамки. Сама же длина рамки зависит от длины наибольшей строки внутри рамки.
Задача по выводу рамки разбивается на несколько простых действий.
Следует:
Удобнее задачу решать с помощью класса, у которого есть методы:
#include <iostream>
#include "LabInfo.h"
#include "Windows.h"
int main()
{
LabInfo l;
// Кириллица в консоли
SetConsoleCP(1251); // функция устанавливает кодовую таблицу(win-cp 1251) для работы с потоком ввода
SetConsoleOutputCP(1251); // функция устанавливает кодовую таблицу(win-cp 1251) для работы с потоком вывода
l.Input();
l.PrintTitle();
}
#pragma once
#include "string"
class LabInfo
{
std::string LabNo; // номер лабораторной работы
std::string LName; // фамилия студента
std::string FName; // имя студента
std::string SName; // отчество
std::string GroupNum; // номер группы
std::string Lines[5]; // Лабораторная работа № LabNo
void MakeLines(); // процедура формирования строк внутри рамки
public:
void Input(); // процедура ввода данных
void PrintTitle(); // процедура отображения рамки
};
void LabInfo::Input()
{
// номер лабораторной работы
std::cout << "Введите номер лабораторной работы: ";
std::cin >> LabNo;
// фамилия студента
std::cout << "Введите фамилию студента: ";
std::cin >> LName;
// имя студента
std::cout << "Введите имя студента: ";
std::cin >> FName;
// отчество
std::cout << "Введите отчество студента: ";
std::cin >> SName;
// номер группы
std::cout << "Введите номер группы: ";
std::cin >> GroupNum;
MakeLines();
}
Это просто цикл по пяти строчкам Lines
void LabInfo::PrintTitle()
{
std::cout << "\n";
for (int i = 0; i < 5; i++) {
std::cout << "\t\t\t" << Lines[i] << "\n";
}
}
void LabInfo::MakeLines()
{
Lines[1] = "Лабораторная работа № " + LabNo;
Lines[2] = "Выполнил(а): ст. гр. " + GroupNum;
Lines[3] = LName + " " + FName + " " + SName;
// определяем наибольшую длину среди строчек
int len = Lines[1].length(), l;
for (int i = 2; i < 4; i++) {
l = Lines[i].length();
if (l > len) {
len = l;
}
}
// дополняем пробелами
for (int i = 1; i < 4; i++) {
l = len - Lines[i].length();
for (int j = 0; j < l; j++) {
Lines[i] += " ";
}
}
// дополняем звездочками
for (int i = 1; i < 4; i++) {
Lines[i] = "* " + Lines[i] + " *";
}
// формируем верхнюю линию
for (int i = 0; i < len + 4; i++) {
Lines[0] += "*";
}
// формируем нижнюю линию
Lines[4] = Lines[0];
}