Лекция: Манипуляторы и форматирование ввода-вывода

В программах часто требуется осуществлять ввод и вывод данных в определенном формате. Для этого обычно используются так называемые манипуляторы, основные из которых приведены в табл. 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;

}

еще рефераты
Еще работы по информатике