Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВСЕ ЛАБОРАТОРНІ І СЕМЕСТР.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
250 Кб
Скачать
☆

Хід роботи

1. Відлагодити програму та отримати приведені нижче результати.

В даному прикладі показано, як встановити декілька прапорів формату.

#include <iostream>

using namespace std;

int main()

{

cout « 123.23 « " привіт " « 100 « '\п';

cout « 10 «' ' « -10 « '\п';

cout « 100.0 « '\п';

// формат змінюється

cout.unsetf(ios::dec);

cout.setf(ios::hex | ios::scientific);

cout « 123.23 « " привіт " « 100 « '\n' ;

cout.setf(ios::showpos);

cout « 10 «' ' « -10 « '\n';

cout.setf(ios:rshowpoint | ios::fixed);

cout « 100.0;

return 0;

Після виконання програми на екран виводиться наступне:

123.23 привіт 100

10 -10

100

1.232300е+02 привіт 64

a fffffffS

+100.000000

2. Скласти програму , в якої використати прапори формату, форматуючі функції та маніпулятори для виводу результатів та значень змінних.

Варіант №1

1.

Варіант №2

1.

Варіант №3

1.

Варіант №4

1.

Варіант №5

1.

Варіант №6

1.

Варіант №7

1.

Варіант№8

1.

Варіант№9

1.

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

  1. Для чого використовуються флаги?

  2. Для чого використовуються форматуючі функції?

  3. Для чого використовуються маніпулятори?

Лабораторна робота № 13.

Тема :Використання потоків у файловому вводі-виведенні.

Мета: Навчитися виводити в програмах форматовані дані. Спроектувати и написати програму, яка використовує ці поняття.

Література: Г.Шилдт,Самоучитель С++, С.В. Глушков, Практикум по С++.

Теоретичні положення

Заголовочний файл iostream містить набір класів, що забезпечують введення та виведення інформації в стилі мови С++. З точки зору програми С++ введення та виведення являє собою потік байтів. При введенні програма читає байти з потоку вводу, при виведенні – вставляє байти в потік. Якщо програма орієнтована на роботу з текстом (або навіть з числовою інформацією в текстовому вигляді), кожний байт є представленням чергового символу. В загальному випадку байти потоку є двійковим представленням даних довільного типу.

Байти потоку введення можуть поступати з клавіатури або з зовнішнього пристрою пам'яті. Так само байти потоку виведення можуть бути відправлені на екран, принтер, зовнішній пристрій. Тобто потік діє як посередник між відправною точкою та точкою призначення потоку. Це дозволяє С++-програмі обробляти потоки незалежно від того, звідки вони поступили або куди направляються. Образно потік можна уявляти як трубу, по якій спрямовуються байти інформації. Отже, для роботи потоком його треба приєднати до програми та зв'язати з файлом, що містить інформацію. Більш ефективно введення та виведення інформації можна здійснювати з допомогою буфера, який відіграє роль резервуара для накопичення інформації щоб зменшити кількість звертань до зовнішніх пристроїв пам'яті.

Ієрархія класів потоків мови С++.

Клас ifstream , який реалізує операції введення із файлу.

Один із його конструкторів цього класу має вигляд:

ifstream :: ifstream (char* pFileName,

int mode = ios::in,

int prot = filebuff::openprot);

Перший аргумент – ім’я файлу, що відкривається для введення. Другий та третій задають режими відкриття файлу. Їх зміст представлений у таблицях нижче.

Клас ofstream , який реалізує операції виведення у файл.

Один із його конструкторів цього класу має вигляд:

ofstream :: ofstream (char* pFileName,

int mode = ios::out, int prot = filebuff::openprot);

Перший аргумент – ім’я файлу, що відкривається для виводу. Другий та третій задають режими відкриття файлу. Їх зміст представлений у таблицях нижче.

Значення параметру mode

Прапорець

Призначення

ios::ate

Перемістити вказівник у кінець файлу після його відкриття

ios::app

Якщо файл існує – дозапис у нього

ios::in

Відкрити файл для введення (замовчування для istream)

ios::out

Відкрити файл для виведення (замовчування для ostream)

ios::nocreate

Якщо файл не існує – повернути помилку

ios::noreplace

Якщо файл існує – повернути помилку

ios::binary

Відкрити файл як двійковий (бінарний) (за замовчуванням як текстовий )

 Приклад програми створення та сортування файлу.

#include <fstream>

#include <string>

#include <vector>

#include <algorithm>

int main()

{

string ifile;

cout <"Ввести ім’я файлу для: ";

cin >> ifile;

// Сконструювати об’єкт класу ifstream для ввода з файлу

ifstream infile( ifile.c_str() );

if ( ! infile ) {

cerr < "помилка, не можна відкрити вхідний файл: "

< ifile < endl;

return -1;

}

string ofile = ifile + ".sort";

// сконструювати об’єкт класу ofstream для виводу в файл

ofstream outfile( ofile.c_str() );

if ( ! outfile) {

cerr <<"помилка, не можна відкрити файл: "

<< ofile <<endl;

return -2;

}

string buffer;

vector< string, allocator > text;

int cnt = 1;

while ( infile >> buffer ) {

text.push_back( buffer );

cout <<buffer << (cnt++ % 8 ? " " : "\n" );

}

sort( text.begin(), text.end() );

// вивід відсортованого файлу

vector<string >::iterator iter = text.begin();

for ( cnt = 1; iter != text.end(); ++iter, ++cnt )

outfile << *iter

<< (cnt % 8 ? " " : "\n" );

return 0;

}