Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Флаги и форматирующие методы




ДО ЛАБОРАТОРНИХ ТА ПРАКТИЧНИХ

РОБІТ З ДИСЦИПЛІНИ

"Програмування"

 

 

Харків 2007


МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ
УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

 

МЕТОДИЧНІ ВКАЗІВКИ

 

ДО ЛАБОРАТОРНИХ ТА ПРАКТИЧНИХ

РОБІТ З ДИСЦИПЛІНИ

"програмування"

для студентів денної форми навчання спеціальності

_______________________

 

 

Відповідальний за випуск Путятін Є.П.

 

 

ЗАТВЕРДЖЕНО

кафедрою інформатики.

Протокол № від

 

Харків 2007


Методичні вказівки до лабораторних та практичних робіт з дисципліни “Програмування” для cтудентів денної форми навчання спеціальності ___________ /Упоряд.: В.А. Любченко, О.В. Яковлева, Д.О. Руденко - Харкiв: ХНУРЕ, 2007. - ___ с.

 

 

Упорядники: В.А. Любченко

О.В. Яковлева

Д.О. Руденко

 

 

Рецензент С.С. Танянський, доц. каф. ЕОМ


ЗМІСТ

ВСТУП.. 5

1 Директиви препроцесора. Багатомодульне програмування. 6

2 Потокові класи мови С++. 17

3 Файлові потоки мови С.. 41

4 Перегрузка операцій. 55

5 Основи розробки класів у мові С++. 60

6 Наслідування, поліморфізм, інкапсуляция. 79

РЕКОМЕНДОВАНА ЛІТЕРАТУРА.. 105

 


ВСТУП

В наш час персональні комп’ютери мають широке застосування в pізноманітних галузях людської діяльності. Все це неможливо без знань мов програмування і тому таку актуальність надбав лозунг “Програмування – друга грамотність”.

Головною метою даних методичних вказівок є допомога студентам в оволодінні практичними навичками у підготовці та розв’язанні задач найбільш розповсюдженою мовою програмування С++, а також придбанні початкових знань в складній сучасній системі програмування VISUAL C ++.

Цикл лабораторних робіт передбачає активну самостійну роботу студентів. Кожна робота виконується студентом особисто, згідно з варіантом завдання, номер якого повиненвідповідати порядковому номеру студента в журналі академгрупи.

Для виконання роботи необхідно: опрацювати теоретичний матеріал, дати відповіді на контрольні запитання, які надаються в цих методичних вказівках, розробити схему алгоритму, скласти програму свого варіанту завдання та розв’язати його на персональному комп’ютері (ПК), оформити звіт і захистити його.

Звіт повинен мати: номер лабораторної роботи, назву та мету роботи, завдання, схему алгоритму (в деяких випадках – короткий опис алгоритму), роздрук-лістинг тексту програми та результати її розв’язання, аналіз одержаних результатів і висновок щодо роботи.

Правила техніки безпеки забороняють студентам вмикати або вимикати ПК, розкривати будь-яке обладнання, знімати захисні щити, а також доторкатись до струмопровідних частин обладнання.

 


Директиви препроцесора. Багатомодульне програмування

 

Мета роботи

 

Отримати практичні навички застосування директив препроцесора, насамперед у створенні макросів, умовної компіляції, створенні багатомодульного проекту.

 

1.2 Вказівки щодо організації самостійної роботи студентів

 

Директивы препроцессора начинаются с символа “#” и выполняются во время 1-й фазы компиляции. Результат выполнения затем компилируется, но может быть выведен в stdout или в файл при помощи опций компилятора.

Директива #include

Эта директива предписывает препроцессору поместить на ее место содержимое другого файла. Синтаксис директивы

 

#include <имя_файла>

или

#include "имя_файла".

 

Если имя_файла не является полным именем, в первом случае поиск происходит только в пределах специфицированных каталогов включаемых файлов. Во втором случае сначала просматривается текущий каталог.

Директива #define

Директива #define определяет подстановку в тексте программы. Она используется для определения:

- символических констант:

#define имя текст__подстановки

(все вхождения имени заменяются на текст подстановки);

- макросов, которые выглядят как функции, но реализуются подстановкой их текста в текст программы:

#define имя (параметры текст_полстановки;

- символов, управляющих условной компиляцией. Они используются вместе с директивами #i fdef и #i fndef. Формат:

#define имя Примеры:

#define VERSION I

#define VASIA "Василий Иванович"

#define MAX(х,у) ((x)>(y)? (x): (y))

Имена рекомендуется записывать прописными буквами, чтобы зрительно отличать их от имен переменных и функций. Параметры макроса используются при макроподстановке, например, если в тексте программы используется вызов макроса y = MAX(suml,. sum2); он будет заменен на

у = ((suml)>(sum2)? (suml):(sum2));

Отсутствие круглых скобок может привести к неправильному порядку вычисления, поскольку препроцессор не оценивает вставляемый текст с точки зрения синтаксиса. Например, если к макросу #deflne sqr(x) (х*х) обратиться как sqr(y+l), в результате подстановки получится выражение (у+1*у+1).

Директивы #undef удаляет объявленную макроподстановку

 

Условная компиляция

Можно избирательно компилировать части файла. Синтаксис директивы условной компиляции следующий:

 

#if выражение_1

// эта часть файла компилируется, если выражение_1 истинно

#elif выражение_2

// эта часть файла компилируется, если выражение_1 ложно, а

// выражение_2 истинно

...

#else

// эта часть файла компилируется, когда все выражения ложны

#endif

 

Директивы #elif и #else могут быть опущены.

 

Пример. Простое исключение секции кода.

#if 0

// исключенная секция кода

#endif

 

Значения выражений в директивах #if и #elif должны быть целыми константами. В выражениях нельзя использовать операцию sizeof.

В качестве выражения в директивах #if и #elif можно использовать оператор defined. Он проверяет, был ли определен макрос.

Пример. Выбор между секциями кода.

 

#if defined(DEBUGGING)

space = 1000;

#else

space = 10;

#endif

 

 

Директивы #ifdef и #ifndef являются сокращением для директив

#if defined и #if!defined соответственно.

 

Пример. Предотвращение многократной трансляции заголовочного файла sample.h.

 

#ifndef __SAMPLE_H__

#define __SAMPLE_H__

// здесь содержание файла

#endif

 

 

Если файл sample.h окажется многократно включенным в исходный код программы, то при таком “обрамлении” его содержимого будет оттранслировано лишь первое вхождение заголовочного файла.

 

Замечание. В Visual C++ та же цель достигается применением директивы

#pragma once.

Директива #error

Директива #error вызывает во время компиляции сообщение об ошибке.

 

#error сообщение_об_ошибке

Пример. Обеспечение правильности параметров компиляции.

 

#if!defined(__cplusplus)

#error Этот файл должен компилироваться в режиме С++

#endif

 

Сообщение может содержать идентификаторы макросов, которые будут расширены препроцессором. Директива обычно применяется, когда не был определен необходимый макрос.

Директива #line

С помощью директивы #line можно изменить внутренний счетчик строк компилятора и имя компилируемого файла. Она имеет следующий вид

#line номер_строки ["имя_файла"]

Директива #pragma

Директива #pragma позволяет влиять на процесс и результат компиляции. Вот несколько опций для компилятора Visual C++.

§ #pragma hdrstop — предписывает компилятору не включать дальнейшую информацию в прекомпилируемый заголовок;

§ #pragma once — предписывает компилятору лишь однажды включать данный заголовочный файл в программу;

#pragma warning — выборочно разрешает или подавляет предупреждающие сообщения.

 

Порядок виконання роботи

 

Вивчити директиви препроцесорної обробки. Ознайомитися з правилами створювання макросами та класичними помилками програмістів-початківців. Перед початком виконання лабораторної роботи розібрати наведений приклад. Особливу увагу приділити механізму підключення модулю до основної програми.

 

1.4 Контрольні запитання та завдання

 

Завдання

 

Ввід-вивід елементів масиву та вирішення завдання оформити у вигляді макросів та розмістити їх в окремому модулі.

 

1.6 Варіанти завдань

 

Вариант 1

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) сумму отрицательных элементов массива;

2) произведение элементов массива, расположенных между максимальным и минимальным элементами.

Упорядочить элементы массива по возрастанию.

Вариант 2

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) сумму положительных элементов массива;

2) произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.

Упорядочить элементы массива по убыванию.

Вариант 3

В одномерном массиве, состоящем из целых элементов, вычислить:

1) произведение элементов массива с четными номерами;

2) сумму элементов массива, расположенных между первым и последним нулевыми элементами.

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом — все отрицательные (элементы, равные 0, считать положительными).

Вариант 4

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) сумму элементов массива с нечетными номерами;

2) сумму элементов массива, расположенных между первым и последним отрицательными элементами.

Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями.

Вариант 5

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) максимальный элемент массива;

2) сумму элементов массива, расположенных до последнего положительного элемента.

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [ , ]. Освободившиеся в конце массива элементы заполнить нулями.

Вариант 6

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) минимальный элемент массива;

2) сумму элементов массива, расположенных между первым и последним положительными элементами.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом — все остальные.

Вариант7

В одномерном массиве, состоящем из целых элементов, вычислить:

1) номер максимального элемента массива;

2) произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине — элементы, стоявшие в четных позициях.

Вариант 8

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) номер минимального элемента массива;

2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом — все остальные.

Вариант 9

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) максимальный по модулю элемент массива;

2) сумму элементов массива, расположенных между первым и вторым положительными элементами.

Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.

Вариант 10

В одномерном массиве, состоящем из целых элементов, вычислить:

1) минимальный по модулю элемент массива;

2) сумму модулей элементов массива, расположенных после первого элемента, равного нулю.

Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине — элементы, стоявшие в нечетных позициях.

Вариант 11

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) номер минимального по модулю элемента массива;

2) сумму модулей элементов массива, расположенных после первого отрицательного элемента.

Сжать массив, удалив из него все элементы, величина которых находится в интервале [ , ]. Освободившиеся в конце массива элементы заполнить нулями.

Вариант 12

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) номер максимального по модулю элемента массива;

2) сумму элементов массива, расположенных после первого положительного элемента.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [ , ], а потом — все остальные.

Вариант 13

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, лежащих в диапазоне от до ;

2) сумму элементов массива, расположенных после максимального элемента. Упорядочить элементы массива по убыванию модулей элементов.

Вариант 14

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, равных 0;

2) сумму элементов массива, расположенных после минимального элемента.

Упорядочить элементы массива по возрастанию модулей элементов.

Вариант 15

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, больших С;

2) произведение элементов массива, расположенных после максимального по модулю элемента.

Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом — все положительные (элементы, равные 0, считать положительными).

Вариант 16

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество отрицательных элементов массива;

2) сумму модулей элементов массива, расположенных после минимального по модулю элемента.

Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.

Вариант 17

В одномерном массиве, состоящем из целых элементов, вычислить:

1) количество положительных элементов массива;

2) сумму элементов массива, расположенных после последнего элемента, равного нулю.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом — все остальные.

Вариант 18

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, меньших ;

2) сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом — все остальные.

Вариант 19

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) произведение отрицательных элементов массива;

2) сумму положительных элементов массива, расположенных до максимального элемента.

Изменить порядок следования элементов в массиве на обратный.

Вариант 20

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) произведение положительных элементов массива;

2) сумму элементов массива, расположенных до минимального элемента.

Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.

Вариант 21

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) сумму отрицательных элементов массива;

2) количество элементов массива больше первого элемента;

Изменить порядок следования элементов в массиве на обратный.

Вариант 22

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) обнулить все отрицательные элементы массива расположенные на четных местах;

2) подсчитать количество ненулевых элементов массива;

Отсортировать все ненулевые элементы по возрастанию.

Вариант 23

В одномерном массиве, состоящем из целых элементов, вычислить:

1) максимальный по модулю элемент массива;

2) сумму всех элементов массива, расположенных после максимального по модулю.

Отсортировать элементы массива стоящие после максимального по модулю.

Вариант 24

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) номер максимального элемента массива;

2) произведение элементов массива, расположенных между первым и вторым отрицательными элементами.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 5, а потом — все остальные.

Вариант 25

В одномерном массиве, состоящем из целых элементов, вычислить:

1) сумму положительных элементов массива;

2) произведение элементов массива, расположенных между первым четным и последним нечетным элементами.

Упорядочить элементы массива по возрастанию.

Вариант 26

В одномерном массиве, состоящем из целых элементов, вычислить:

1) произведение положительных элементов массива;

2) сумму элементов массива, расположенных между максимальным по модулю и последним четным элементами.

Упорядочить элементы массива по убыванию.

Вариант 27

В одномерном массиве, состоящем из целых элементов, вычислить:

1) произведение элементов массива с четными номерами;

2) сумму элементов массива, расположенных между первым и последним нулевыми элементами.

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом — все отрицательные (элементы, равные 0, считать положительными).

Вариант 28

В одномерном массиве, состоящем из целых элементов, вычислить:

1) номер максимального по модулю элемента массива;

2) произведение элементов массива, расположенных между первым и последним нулевыми элементами.

Переставить максимальный по модулю элемент с первым.

Вариант 29

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) минимальный положительный элемент массива;

2) сумму элементов массива, расположенных между первым положительным и последним отрицательным элементами.

Переставить местами минимальный положительный элимент с последним отрицательным.

Вариант 30

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, равных 0;

2) количество элементов массива, расположенных после минимального элемента.

Упорядочить элементы массива по убыванию модулей элементов.

 

Контрольний приклад

 

В матриці найти суму першого рядка, відсортувати другий рядок за збільшенням, а третій за зменшенням. Оформити кожну підзадачу у вигляді макросу.

Розв’язок

Главный файл (содержащий функцию main)

#include <iostream>

using namespace std;

#include "myHeader.h"

#define N 3

#define M 5

int main()

{

int mas[N][M]={9,3,6,23,21,

4,5,6,4,51,

4,6,24,23,24};

cout<<"Nachalnije dannie\n";

outmatr(mas,N,M);

#define cmp >

# if defined (cmp)

sortmas(mas[1],M);

#else

cout<<"error";

#endif

#define MES "sort \">\" 2-ja stroka"

cout<<endl;

outmas(mas[1],5);

#define cmp <

#define MES "sort \"<\" 3-ja stroka"

# if defined (cmp)

sortmas(mas[2],M);

#else

cout<<"error";

#endif

cout<<endl;

outmas(mas[2],5);

cout<<endl;

int sum;

SUM(mas[0],5,sum);

cout<<"Summa 1-oj stroki = "<<sum<<endl;

cout<<"Rezultat:"<<endl;

outmatr(mas,N,M);

cin.get();

return 0;

}

 

Файл “myHeader.h”

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

#ifndef _MY_HEADER_

#define _MY_HEADER_

#define MES "ne sort"

#define cmp ==

#define sortmas(mas,n) { for (int i=0;i<n;i++) \

for (int j=0;j<n-i-1;j++) \

if(mas[j] cmp mas[j+1]) \

{ mas[j]=mas[j]+mas[j+1]; \

mas[j+1]=mas[j]-mas[j+1]; \

mas[j]=mas[j]-mas[j+1];}; \

}

#define outmas(mas,n) { for (int i=0;i<n;i++) cout<<mas[i]<<"\t"; \

cout<<'\t'<<MES<<endl;}

#define outmatr(mas,n,m) { for (int i=0;i<n;cout<<endl,i++)\

for (int j=0;j<m;j++)\

cout<<mas[i][j]<<"\t"; \

}

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

#define SUM(mas,n,Sum) { Sum =0; \

for (int j=0;j<n;j++)\

Sum+=mas[j]; \

}

 

#endif

 


2 Потокові класи мови С++

 

Мета роботи

 

2.2 Вказівки щодо організації самостійної роботи студентів

 

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

Форматирование данных

В потоковых классах форматирование выполняется тремя способами — с помощью флагов, манипуляторов и форматирующих методов.

Флаги и форматирующие методы

Флаги представляют собой отдельные биты, объединенные в поле x_f1ags типа long класса ios. Флаги перечислены в табл. 10.1.

Таблица 10.1. Флаги форматирования

       
Флаг Положение Умолчание Описание действия при установленном бите
skipws 0x0001 + При извлечении пробельные символы игнорируются
left 0x0002   Выравнивание по левому краю поля
right 0x0004 + Выравнивание по правому краю поля
internal 0x0008   Знак числа выводится по левому краю, число — по правому. Промежуток заполняется символами x_fill по умолчанию пробелами
dec 0x0010 + Десятичная система счисления
oct 0x0020   Восьмеричная система счисления
hex 0x0040   Шестнадцатеричная система счисления
showbase 0x0080   Выводится основание системы счисления (Ох для шестнадцатеричных чисел и 0 для восьмеричных)
showpoint 0x0100   При выводе вещественных чисел печатать десятичную точку и дробную часть
uppercase 0x0200   При выводе использовать символы верхнего регистра
showpos 0x0400   Печатать знак при выводе положительных чисел
scientific 0x0800   Печатать вещественные числа в форме мантиссы с порядком
fixed 0x1000   Печатать вещественные числа в форме с фиксированной точкой (точность определяется полем х precision, см. ниже)
unitbuf 0x2000   Выгружать буферы всех потоков после каждого вывода
stdio 0x4000   Выгружать буферы потоков stdout и stderr после каждого вывода

 

ПРИМЕЧАНИЕ

Флаги (left, right и internal), (dec, oct и hex), а также (scientific и fixed) взаимно исключают друг друга, то есть в каждый момент может быть установлен только один флаг из каждой группы.

 

Для управления флагами в классе ios есть методы flags, setf и unsetf:

long ios::f lags(); — возвращает текущие флаги потока;
long ios::flags (long); — присваивает флагам значение параметра;
long ios::setf (long, long); — присваивает флагам, биты которых установлены в первом параметре, значение соответствующих битов второго параметра;
long ios::setf(long); — устанавливает флаги, биты которых установлены в параметре;
long ios::unsetf(long); — сбрасывает флаги, биты которых установлены в параметре.

Все функции возвращают прежние флаги потока.

Например, если вначале задать выравнивание по правому полю:

cout.setf(ios:: right);

а затем необходимо вывести информацию выровненную по левому полю, то вначале необходимо сбросить флаг выравнивания потока вывода по правому полю:

cout.unsetf(ios::right);

а затем установить флаг выравнивания по левому полю

cout.setf(ios::left);

 

Кроме флагов, для форматирования используются следующие поля класса ios:

int x_width — минимальная ширина поля вывода;
int x_precision — количество цифр в дробной части при выводе вещественных чисел с фиксированной точкой или общее количество значащих цифр при выводе в форме с мантиссой и порядком;
int x_fill — символ заполнения поля вывода.

Для управления этими полями используются методы width, precision и fill:

int ios::width() — возвращает значение ширины поля вывода;
int ios::width (int) — устанавливает ширину поля вывода в соответствии со значением параметра;
   
int ios::precision() — возвращает значение точности представления при выводе вещественных чисел;
int ios::precision (int) — устанавливает значение точности представления при выводе вещественных чисел, возвращает старое значение точности;
char fill() — возвращает текущий символ заполнения;
char fill (char) — устанавливает значение текущего символа заполнения, возвращает старое значение символа.

Перед установкой некоторых флагов требуется сбросить флаги, которые не мо гут быть установлены одновременно с ними. Для этого удобно использовать вто рым параметром метода setf перечисленные ниже статические константы класса ios:

adjustfield (left | right | internal)

basefield (dec | oct | hex)

floatfield (scientific | fixed)

Пример форматирования при выводе с помощью флагов и методов:

Пусть в массиве структур храниться информация об успеваемости студентов, которую необходимо вывести на экран в удобном для пользователя виде.

#include <iostream>

using namespace std;

const int n=2;

//Создадим структуру для хранения информации о студентах с

//двумя полями ФИО и средний бал успеваимости

struct Tstudent

{

char FIO[20];

float bal;

}StudetnPotok[n]={"Petrov",3.5,"Sidorov",5.0/3};

int main (int argc, char * const argv[])

{

//Следующий фрагмент кода иллюстрирует форматирование потока вывода

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

{

//Форматирование с помощью методов потока

cout.unsetf(ios::right);//сбрасывваем флаг потока выравнивание по правому

//полю(это необходимо сделать обязательно если до э

//того флаг был установлен)

cout.setf(ios::left);//установить флаг выравнивания по левому полю

cout.fill('.');// задаем символ - заполнитель

cout.setf(ios::fixed);//установить флаг вывода числа с фиксированной точкой

// следующие две строчки устанавливают формат вывода чисел в виде

// мантиссы с порядком

// cout.setf(ios::scientific);//установить флаг вывода числа в формате

//мантиссы с порядком

// cout.unsetf(ios::fixed);//сбрасывает флаг вывода числа с фиксированной

//точкой (это необходимо сделать обязательно если до этого флаг был

//установлен)

cout.precision(3);//задаем точность (количество чисел после

//запятой или количество значащих чисел)

cout.width(15); //задать поле вывода под поле 20 символов.

//параметр необходимо указывать каждый раз для вывода

cout <<StudetnPotok[i].FIO;//выводим фамилию

cout.setf(ios::right);//задаем вывод по правому полю

cout.width(10);//задаем количество символов под вывод числа

cout.fill('_');//меняем символ заполнитель

cout<<StudetnPotok[i].bal;

cout<<'\n';

}

cin.get();

return 1;

}

//Этот фрагмент выведет на экран следующий результат:

Petrov........._____3.500

Sidorov........_____1.667

 

Манипуляторы

Манипуляторами называются функции, которые можно включать в цепочку операций помещения и извлечения для форматирования данных. Манипуляторы делятся на простые, не требующие указания аргументов, и параметризованные. Пользоваться манипуляторами более удобно, чем методами установки флагов форматирования.

Простые манипуляторы

Ниже перечислены манипуляторы, не требующие указания аргументов.

dec — устанавливает при вводе и выводе флаг десятичной системы счисления;
oct — устанавливает при вводе и выводе флаг восьмеричной системы счисления;
hex — устанавливает при вводе и выводе флаг шестнадцатеричной системы счисления;
ws — устанавливает при вводе извлечение пробельных символов;
endl — при выводе включает в поток символ новой строки и выгружает буфер;
ends — при выводе включает в поток нулевой символ;
flush — при выводе выгружает буфер.

Изменения системы счисления действуют до следующего явного изменения.

Пример:

cout << 13<< hex<< ' '<< 13 << oct<< ' '<< 13 << endl;

Если другие значения флагов установлены по умолчанию, будет выведено:

13 d 15





Поделиться с друзьями:


Дата добавления: 2017-02-25; Мы поможем в написании ваших работ!; просмотров: 392 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Есть только один способ избежать критики: ничего не делайте, ничего не говорите и будьте никем. © Аристотель
==> читать все изречения...

2250 - | 2202 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.014 с.