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.
Одни из возможных результатов работы программы при формировании трехстрочного документа имеет следующий вид: