Лекция: Манипуляторы и форматирование ввода-вывода
В программах часто требуется осуществлять ввод и вывод данных в определенном формате. Для этого обычно используются так называемые манипуляторы, основные из которых приведены в табл. 5.1. Некоторые из них имеют аргумент (тип). Для использования последних к программе требуется подключить заголовочный файл <iomanip.h>.
С помощью манипуляторов легко управлять представлением выводимой информации. В частности манипулятор setw (int n) удобен при формировании таблиц в циклах.
Например:
......... .
cout<<setprecision (2); //две цифры после запятой
for (int i=0; i<10; i++)
cout<<setw (6) <<a[i]<<endl; //ширина поля – 6 цифр
......... .
Таблица 5.1
Манипуляторы
| Манипуляторы | Действия |
| endl | Переход на новую строку при выводе |
| dec | Вывод чисел в десятичной системе (действует по умолчанию) |
| hex | Вывод чисел в шестнадцатеричной системе |
| oct | Вывод чисел в восьмеричной системе |
| setw (int n) | Устанавливает минимальную ширину поля в n символов |
| setprecision (int n) | Устанавливает количество цифр после запятой при выводе вещественных чисел |
| setfill (int n) | Устанавливает символ-заполнитель с кодом n; этим символом выводимое значение будет заполняться до необходимой ширины |
| setbase (int n) | Устанавливает систему счисления n (2, 8, 10,16) |
Пример 1.Получить вещественную матрицу А(7,7), первая строка которой задается формулой a1j=2,13j+3,7, (j=1,..,7), вторая строка задается формулой, (j=1,..,7), а каждая следующая строка есть сумма двух предыдущих. Определить в четных столбцах матрицы А число элементов, не принадлежащих интервалу (5, 10), а в седьмой строке определить произведение отрицательных элементов в нечетных столбцах матрицы А.
Программа для решения данной задачи приведена в лист. 5.1.
Листинг 5.1. mass_1.сpp
#include <iostream.h>
#include <math.h>
#include <iomanip.h> //Включение заголовочного файла, подключающего
//манипуляторы
void main()
{
double a[8][8];
//Получение матрицы a
for(int i=1;i<8;i++)
for(int j=1;j<8;j++)
{
if(i==1) a[i][j]=2.13*j+3.7;
if(i==2) a[i][j]=j-29/(2+1.3/j);
if(i>2) a[i][j]=a[i-1][j]+a[i-2][j];
}
//Определение числа элементов в четных столбцах матрицы a,
// не принадлежащих интервалу (5,10)
int k=0;
for(int i=1;i<8;i++)
for(int j=1;j<8;j++)
if ((j%2==0)&&((a[i][j]<5)||(a[i][j]>10))) k++;
//Определение произведения отрицательных
//элементов нечетных столбцов в 7 строке матрицы a
double p=1;
for(int i=7,j=1;j<8;j++)
if((a[i][j]<0)&&(j%2==1)) p*=a[i][j];
//Вывод результатов вычислений
//Вывод матрицы a
cout<<«Матрица a:»<<"\n";
cout<<setfill('.') //Введение символов '.' в поле вывода
<<setprecision(4); //Установка точности вывода
for(int i=1;i<8;i++)
for(int j=1;j<8;j++)
{cout<<" "<<setw(8)<<a[i][j]; //Фоматирование вывода
if(j==7)cout<<"\n"; //Формирование строки
}
cout<<"\nЧисло элементов в четных столбцах матрицы a,\n";
cout<< "не принадлежащих интервалу (5,10):"<<endl;
cout<<«k=»<<k<<"\n";
cout<<"\nПроизведение отрицательных элементов в 7 строке\n";
cout<<"нечетных столбцов матрицы a:"<<endl;
cout<<«p=»<<p;
}