Мне нужно согласно заданию лабораторной работы изучить работу со структурами, после чего реализовать вывод массива структур в виде таблицы, а как это сделать, если длина ФИО и других полей таблицы, куда записывается текст разная? Я уже использовал в коде всё, что было по этой теме изучено и не могу двигаться дальше, пока не сделаю это, пожалуйста, помогите реализовать корректный вывод массива структур в виде таблицы.(код ниже)
#include
#include
#include
#include
using namespace std;
#define DN 25 //Длина названия
typedef struct {
struct FIO {
char familiya[DN];
char name[DN];
char otchestvo[DN];
} fio;
struct DATA {
int year;
int mes;
int day;
} data;
struct ADRES {
char nas_punkt[DN];
char streat[DN];
int zdaniye;
char litera[3];
} adres;
struct OBORUDOVANIE {
char tip[DN];
char name[DN];
float price;
} oborudovanie;
int col_uborud;
int stoimost_ystanovki;
int obchaya_stoimost;
} ZAYAVKA;
ZAYAVKA VVOD_ZAYAVKI();
void VIVOD_MASSIVA_ZAYAVOK(ZAYAVKA[],int kol_zayavok );
int main() {
setlocale(LC_CTYPE, "");
system("color f0");
const int kol_max = 55;
int kol;
ZAYAVKA massiv_zayavok[kol_max];
cout<< endl << "Сколько вы хотите ввести заявок?: ";
cin >> kol;
for (int i = 0; i < kol; i++) {
ZAYAVKA zayavka;
massiv_zayavok[i] = VVOD_ZAYAVKI();
}
VIVOD_MASSIVA_ZAYAVOK(massiv_zayavok, kol);
return 0;
}
ZAYAVKA VVOD_ZAYAVKI() {
ZAYAVKA zayavka;
cout << "\nФормируем заявку:" << endl;
cout << "Введите фамилию: ";
cin >> zayavka.fio.familiya;
cout << "Введите имя: ";
cin >> zayavka.fio.name;
cout << "Введите отчество: ";
cin >> zayavka.fio.otchestvo;
cout << "Введите год подачи заявки: ";
cin >> zayavka.data.year;
cout << "Введите месяц подачи заявки: ";
cin >> zayavka.data.mes;
cout << "Введите день подачи заявки: ";
cin >> zayavka.data.day;
cout << "Введите название населённого пункта,\n"
<< "где будет происходить установка оборудования: ";
cin >> zayavka.adres.nas_punkt;
cout << "Введите название улицы,\n"
<< "где будет происходить установка оборудования: ";
cin >> zayavka.adres.streat;
cout << "Введите номер здания,\n"
<< "где будет происходить установка оборудования: ";
cin >> zayavka.adres.zdaniye;
cout << "Введите литеру здания,\n"
<< "где будет происходить установка оборудования: ";
cin >> zayavka.adres.litera;
cout << "Введите тип устанавливаемого оборудования\n"
<< "(chethik, plita, kotel, kolonka): ";
cin >> zayavka.oborudovanie.tip;
cout << "Введите название устанавливаемого оборудования: ";
cin >> zayavka.oborudovanie.name;
cout << "Введите цену устанавливаемого оборудования: ";
cin >> zayavka.oborudovanie.price;
cout << "Введите количество (штук) устанавливаемого оборудования: ";
cin >> zayavka.col_uborud;
zayavka.stoimost_ystanovki=1500;
zayavka.obchaya_stoimost = zayavka.oborudovanie.price * zayavka.col_uborud + zayavka.stoimost_ystanovki;
return zayavka;
}
void VIVOD_MASSIVA_ZAYAVOK(ZAYAVKA zayavka[], int kol_zayavok)
{
cout << setfill('-') << setw(150) << "" << setfill(' ') << endl;
cout << "|" << setw(3) << setfill(' ') << "№" << setw(3) << setfill(' ');
cout << "|" << setw(20) << setfill(' ') << "Заказчик" << setw(12) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << "Дата" << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << "Адрес" << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << "Тип оборудования" << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << "Название" << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << "Цена(руб)" << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << "Количество(шт)" << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << "Стоимость установки(руб)" << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << "Общая сумма(руб)" << setw(5) << setfill(' ') << " |" << endl;
cout << setfill('-') << setw(150) << "" << setfill(' ') << endl;
for (int i = 0; i < kol_zayavok; i++) {
cout << "|" << setw(3) << setfill(' ') << i + 1 << setw(3) << setfill(' ');
cout << "|" << setw(30) << right << setfill(' ')
<< zayavka[i].fio.familiya << " "
<< zayavka[i].fio.name << " "
<< zayavka[i].fio.otchestvo << setw(3) << setfill(' ');
cout << "|" << setw(6) << setfill(' ')
<< zayavka[i].data.day << "."
<< setw(2) << zayavka[i].data.mes << "."
<< setw(4) << zayavka[i].data.year << setw(2) << setfill(' ');
cout << "|" << setw(5) << setfill(' ')
<< zayavka[i].adres.nas_punkt << ", "
<< zayavka[i].adres.streat << ", "
<< zayavka[i].adres.zdaniye
<< zayavka[i].adres.litera << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << zayavka[i].oborudovanie.tip << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << zayavka[i].oborudovanie.name << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << fixed << setprecision(2) << zayavka[i].oborudovanie.price << " " << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << zayavka[i].col_uborud << " " << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << zayavka[i].stoimost_ystanovki << " " << setw(5) << setfill(' ');
cout << "|" << setw(5) << setfill(' ') << zayavka[i].obchaya_stoimost << " |" << setw(5) << setfill(' ') << endl;
if (i < kol_zayavok - 1) {
cout << setfill('-') << setw(150) << "" << setfill(' ') << endl;
}
}
cout << setfill('-') << setw(150) << "" << setfill(' ') << endl;
}
Вопрос задан
13 часов назад
29 просмотров