- •Введение
- •Анализ сложности алгоритма [2, 8]
- •Требования к оформлению отчетов по лабораторным работам
- •Лабораторная работа №1
- •Разработка линейных программ.
- •Теоретическая часть
- •Библиотека математических функций
- •Теоретическая часть
- •Варианты задания
- •Лабораторная работа №2. Базовые структуры алгоритмов.
- •Варианты задания
- •Варианты задания
- •Лабораторная работа №3 Одномерные массивы и указатели
- •Теоретическая часть [3]
- •Контрольные вопросы
- •Лабораторная работа №4 Двумерные массивы
- •Теоретическая часть [1, 3]
- •Лабораторная работа №5 Строки и файлы. Файловые операции ввода-вывода
- •Теоретическая часть [1, 3].
- •Значения режимов открытия.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №6 Функции
- •Теоретическая часть [1, 3]
- •Лабораторная работа №7 Сортировка массивов
- •Теоретическая часть [2, 4, 5]
- •Варианты задания
- •Лабораторная работа № 8 Структуры данных
- •Теоретическая часть [1, 3]
- •I. Исходные данные, результаты и промежуточные величины
- •II. Алгоритм решения задачи очевиден:
- •III. Программа и тестовые примеры
- •Контрольные вопросы
- •Лабораторная работа №9 Поиск в массивах
- •Теоретическая часть [2, 5, 6]
- •Разрешение коллизий
- •Лабораторная работа №10 Поиск подстроки
- •Теоретическая часть [2, 6]
- •Лабораторная работа №11 Динамические структуры данных
- •Теоретическая часть [1, 3]
- •Лабораторная работа №12 Алгоритмы на графах
- •Теоретическая часть [7]
- •Основные понятия и виды графов
- •Способы представления графов
- •Матрица инцидентности
- •Список смежности
- •Список ребер
- •Алгоритм Дейкстры
- •Алгоритм Беллмана — Форда
- •Алгоритм Флойда – Уоршелла
- •Заключение
- •Библиографический список
- •Оглавление
Значения режимов открытия.
Режим открытия |
Назначение |
ios::app |
Открывает файл в режиме добавления, располагая файловый указатель в конце файла. |
ios::ate |
Располагает файловый указатель в конце файла. |
ios::in |
Указывает открыть файл для ввода. |
ios::nocreate |
Если указанный файл не существует, не создавать файл и возвратить ошибку. |
ios::noreplace |
Если файл существует, операция открытия должна быть прервана и должна возвратить ошибку. |
ios::out |
Указывает открыть файл для вывода |
ios::trunc |
Сбрасывает (перезаписывает) содержимое существующего файла. |
Следующая операция открытия файла открывает файл для вывода, используя режим ios::noreplace, чтобы предотвратить перезапись существующего файла:
ifstream output_file("FIlename.EXT", ios::out | ios::noreplace);
Выполнение операций чтения и записи
Все предыдущие программы выполняли файловые операции над символьными строками. По мере усложнения программ возникает необходимость читать и писать массивы и структуры. Для этого программы могут использовать функции read и write. При использовании функций read и write нужно указать буфер данных, в который данные будут читаться или из которого они будут записываться, а также длину буфера в байтах, как показано ниже:
input_file.read(buffer, sizeof(buffer)) ; output_file.write(buffer, sizeof(buffer));
Например, следующая программа использует функцию write для вывода содержимого структуры в файл EMPLOYEE.DAT:
#include <iostream>
#include <fstream>
using namespace std;
void main(void) {
setlocale(LC_CTYPE,"RUS");
struct employee {
char name[64];
int age;
float salary;
}
worker = { "Джон Дой", 33, 25000.0};
ofstream emp_file("EMPLOYEE.DAT") ;
emp_file.write((char *) &worker, sizeof(employee));
}
Функция write обычно получает указатель на символьную строку. Символы (char *) представляют собой оператор приведения типов, который информирует компилятор, что вы передаете указатель на другой тип. Подобным образом следующая программа использует метод read для чтения из файла информации о служащем:
#include <iostream>
#include <fstream>
using namespace std;
void main(void) {
setlocale(LC_CTYPE,"RUS");
struct employee {
char name [64] ;
int age;
float salary;
} worker = { "Джон Дой", 33, 25000.0 };
ifstream emp_file("EMPLOYEE.DAT");
emp_file.read((char *) &worker, sizeof(employee));
cout << worker.name << endl;
cout << worker.age << endl;
cout << worker.salary << endl;
}
Порядок выполнения работы
Ознакомьтесь с теоретическим материалом и в соответствии с ним создайте новый проект.
Разберите все задачи теоретической части и проверьте их работоспособность в Visual C++.
Сделайте задание для самостоятельного выполнения в соответствии с номером варианта.
Напишите отчет в соответствии с требованиями, приведенными на стр. 20.
Потренируйтесь отвечать на контрольные вопросы.
