Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 1 курс / метод указания / Информатика. Основы программирования на С++. Учебное пособие.doc
Скачиваний:
142
Добавлен:
08.06.2015
Размер:
2.15 Mб
Скачать

5.2. Манипуляторы и форматирование ввода-вывода

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

}