Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб роб Інф 4 семестр.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
79.07 Кб
Скачать

Лабораторна робота 9

Тема: Шаблони класів. Друзі шаблонів. Статичні змінні шаблонів.

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

  1. Назвіть різні види дружній конструкцій для шаблону класу.

  2. Скільки екземплярів статичних полів буде створено для шаблону класу?

  3. Чи потрібно, як у випадку звичайного класу, для шаблонного класу ініціалізувати статичні змінні за межами класу?

  4. Статичні методи шаблону. Мета використання.

Завдання 1. Перевантажити операції для вводу та виводу у потоки для шаблону класу, визначеного у завданні 3 лабораторного заняття №6.

Завдання 2. Навести приклад використання шаблонної дружньої функції, не пов’язаною за типом з шаблоном класу.

Завдання 3. Приклад з використанням статичного поля(методу) шаблону класу.

Лабораторна робота 10-11

Тема: Потоки. Стандартні потоки. Стан потоку. Помилки потоку. Файловий ввід та вивід з використанням потоків.

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

  1. Поняття потоку.

  2. Назвіть стандартні потоки. Як відкрити стандартні потоки?

  3. Які помилки потоки можуть виникнути? Приклади.

  4. Яким чином перевірити стан потоку?

  5. Поясніть відмінність у зчитуванні з текстового файл за допомогою операції >>, методом getline() та глобальною функцією getline().

  6. Поясніть роботу наступних операторів:

file.open("info.dat", ios::in | ios::out);

file.open("info.dat", ios::in | ios::app);

file.open("info.dat", ios::in | ios::out | ios::ate);

  1. file.open("info.dat", ios::in | ios::out | ios::binary);

  2. Що виведе програма на екран, якщо файл input.txt містить наступні символи:

Run Sport Swim\nSki and Sky\n<EOF>

#include <iostream>

#include <fstream>

#include <string>

using namespace std;

int main()

{

fstream inFile("input.txt", ios::in);

string item;

inFile >> item;

while (inFile)

{

cout << item << endl;

inFile >> item;

}

inFile.close();

return 0;

}

  1. Що буде збережено у файлі після роботи програми?

№include <iostream>

#include <fstream>

#include <iomanip>

using namespace std;

int main()

{

const int SIZE = 5;

ofstream outFile("out.txt");

double nums[SIZE] = {100.279, 1.719, 8.602, 7.777, 5.099};

outFile << fixed << setprecision(2);

for (int count = 0; count < 5; count++)

{

outFile << setw(8) << nums[count];

}

outFile.close();

return 0;

}

  1. Як працюють наступні оператори?

file.seekp(32L, ios::beg);

file.seekp(-10L, ios::end);

file.seekg(-100L, ios::end)

file.seekg(40L, ios::cur);

Завдання 1. Скласти програму для читання з клавіатури послідовності даних, доки зчитування відбувається успішно. Перевірити стан потоку(вивести на екран значення прапорців стану потоку) до початку зчитування та після завершення зчитування. Відновити робочий стан потоку. Продовжити зчитування. Тип даних послідовності та спосіб обробки послідовності обрати згідно варіанту.

Варіант

Тип даних

Задача

  1. .

Char

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

  1. .

Int

Утворити множину(set, STL) з тих елементів послідовності, які містять цифру нуль.

Double

Утворити рядок з додатних чисел послідовності.

String

Число слів та номери слів послідовності, які співпадають з першим словом

Char*

Номери рядків, які містять голосні букви першого слова.

Int

Знайти позиції початку впорядкованих за заростанням підпослідовностей. Наприклад, у посдіовності -4 5 10 2 -1 0 7 6 такими позицієми є 1 4 5 8.

Long double

Знайти позиції елементів послідовності, які є наближеними чи точними значеннями деяких математичних, фізичних, астрономічних констант.

  1. .

Char

Число входжень букв заданого слова у послідовність

  1. .

Float

Обчислити добуток модулів: |a1 - a2|∙ |a2 – a3|∙|a3 – a4|∙ ….

bool

Утворити рядок з латинських букв, яким при вводі відповідали значення істини. Наприклад, при введенні послідовності true true false true маємо отримати рядок « abd».

Char *

Число та номери слів, що містять цифри

Long long

Помістити багатоцифрові числа послідовності (більше 10 цифр) у вектор(vector,STL).

Float

Знайти суму та кількість елементів послідовності, що є цілими числами.

Long double

Знайти суму sin(a1) + sin(a1 + a2) + sin(a1 + a2 + a3) + …

String

Утворити дек(deque, STL) з рядків, що мають більше одного слова.

Завдання 2

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

Завдання 3. Створити масив кораблів(фігур чи ін.)на основі деякої ієрархії класів з віртуальними функціями. Записати масив у бінарний файл. Прочитати масив з файлу. Прочитати інформацію про елемент(корабель чи ін.) за номером(використати прямий доступ до файлу).