Double s1,s2,s3; // Расчетные суммы

zap zapis[n]; // Отдельное определение массива zapis[n] экземпляров

// структур типа zap

// Ввод исходных данных:

cout << "ФОРМИРОВАНИЕ ДОКУМЕНТА: \n";

cout << "ДОКУМЕНТ ДОЛЖЕН СОДЕРЖАТЬ " << n

<< " СТРОКИ - ЗАПИСИ: \n";

for( int i=0; i < n; i++)

{

cout << "\nФОРМИРОВАНИЕ " << i + 1 << " ЗАПИСИ";

cout << "\nВВЕДИТЕ НАЗВАНИЕ ДЕТАЛИ (НЕ БОЛЕЕ 8 СИМВОЛОВ): ";

cin >> zapis[i] . a; // Доступ к элементу а экземпляра структуры zapis[i]

// выполняется операцией точка (.)

cout << "\nУКАЖИТЕ СТОИМОСТЬ ДЕТАЛИ : ";

cin >> zapis[i] . t; // Доступ к элементу t экземпляра структуры zapis[i]

cout << "\nНЕОБХОДИМОЕ КОЛИЧЕСТВО - (ЦЕЛ. ЧИСЛО): \n";

cin >> zapis[i] .k; // Доступ к элементу k экземпляра структуры zapis[i]

}

// Выполнение расчетов:

s1=0;s2=0;s3=0;

for( i=0; i < n; i++)

{

zapis[i].c = zapis[i].t * zapis[i].k;

s1 += zapis[i].t;

s2 += zapis[i].k;

s3 += zapis[i].c;

}

// Построение "шапки" таблицы

clrscr();

cout << "\n СВЕДЕНИЯ О СТОИМОСТИ ВЫДАННЫХ ДЕТАЛЕЙ ";

cout << "\n|---------------------------------------------------------------------------------|";

cout << "\n| n/n | ДЕТАЛЬ | СТОИМОСТЬ | ВЫДАНО | РАСХОД |";

cout << "\n|---------------------------------------------------------------------------------|";

// Заполнение таблицы данными:

for(i=0;i<n;i++)

cout << "\n|" << setw(7) << i+1 << "|" << setw(8) << (zapis[i]).a << "|"

// ------

// |-> манипулятор потока, указывает, что следующая

// выходная величина (i+1) будет напечатана с ши

// риной поля, равной 7 символам

<< setw(13) << setprecision(2) << (zapis[i]).t << "|"

// --------------

// |-> манипулятор потока, указывает, что следующая

// выходная будет напечатана с двумя цифрами по

// сле десятичной точки

<< setw(8) << setprecision(2) << (zapis[i]).k << "|"

<< setw(8) << setprecision(2) << (zapis[i]).c << "|";

cout << "\n|-------------------------------------------------------------------------| ";

cout << "\n| ИТОГО: |" << setw(13) << setprecision(2) << s1

<< "|" << setw(8) << s2<< "|" <<setw(8) << setprecision(2) << s3 << "|";

cout << "\n|--------------------------------------------------------------------------|";

return 0;

}

 

Для форматирования вывода информации на монитор в программе используются манипуляторы потока setw и setprecision. Их назначение приведено в соответствующих комментариях программы_1_2.

Одни из возможных результатов работы программы при формировании трехстрочного документа имеет следующий вид: