- •Основные сведения
- •Ввод и вывод данных через потоки
- •Описание функций математического модуля math
- •Модуль random
- •Лабораторная работа №1 Выполнение программы простой структуры. Вычисление выражений с использованием стандартных функций
- •Варианты
- •Лабораторная работа №2
- •Варианты
- •Лабораторная работа №3
- •Лабораторная работа №4 Работа с одномерными массивами
- •Сортировка массивов
- •Сортировка методом пузырьков (метод простого обмена)
- •Сортировка методом вставок
- •Сортировка методом простого выбора
- •Постановка задачи
- •Варианты
- •Лабораторная работа №5
- •Постановка задачи
- •Варианты
- •Методические указания
- •Лабораторная работа №6 Динамические массивы
- •Постановка задачи
- •Варианты
- •Лабораторная работа №7
- •Постановка задачи
- •Варианты
- •Лабораторная работа №8 Хранение данных на внешних носителях
- •Определение конца файла
- •Закрытие файла, если он больше не нужен
- •Ввод/вывод данных с помощью функций унаследованных от с
- •Постановка задачи
Постановка задачи
Сформировать динамический массив из элементов структурного типа. Структурный тип определен в варианте.
Распечатать сформированный массив.
Выполнить поиск элементов в массиве, удовлетворяющих заданному в варианте условию и сформировать из них новый массив.
Распечатать полученный массив.
Варианты
№ варианта |
Структура |
Критерий для поиска в массиве структур |
1 |
struct person { char*name; char *adres; int age; }; |
Имена начинаются на букву ‘A’ |
2 |
struct date { int day; char*month; int year; }; |
Даты с летними месяцами |
3 |
struct student { char*name; int kurs; float rating }; |
Студенты первого курса |
4 |
struct employee { char*name; float salary; int stage }; |
Сотрудники со стажем больше 10 лет |
5 |
struct pupil { char*name; int age; float rating }; |
Ученики со средним баллом больше 4 |
6 |
struct person { char*name; int age; }; |
Возраст больше 25 лет |
7 |
struct date { int day; char*month; int year; }; |
Даты после 2000 года |
8 |
struct student { char*name; int kurs; float rating }; |
Студенты, у которых рейтинг меньше 3 |
9 |
struct employee { char*name; float salary; int stage }; |
Сотрудники, у которых имя начинается на букву ‘Л’ |
10 |
struct pupil { char*name; int age; float rating }; |
Ученики, у которых фамилия “Иванов” |
11 |
struct person { char*name; int age; }; |
Возраст меньше 18 |
12 |
struct date { int day; char*month; int year; }; |
Дата принадлежит первой декаде месяца |
13 |
struct student { char*name; int kurs; float rating }; |
Студены пятого курса |
14 |
struct employee { char*name; float salary; int stage }; |
Сотрудники со стажем меньше 3 лет |
15 |
struct pupil { char*name; int age; float rating }; |
Ученики со средним баллом равным 4.5 |
16 |
struct person { char*name; int age; }; |
Имена начинаются на букву ‘A’ |
17 |
struct date { int day; char*month; int year; }; |
Даты с зимними месяцами |
18 |
struct student { char*name; int kurs; float rating }; |
Студенты первого курса у которых рейтинг меньше 3 |
19 |
struct employee { char*name; float salary; int stage }; |
Сотрудники со стажем больше 10 лет и заработной платой больше 15000 |
20 |
struct pupil { char*name; int age; float rating }; |
Ученики 13 лет со средним баллом больше 4 |
Лабораторная работа №8 Хранение данных на внешних носителях
С помощью классов
Заголовочный файл iostream.h определяет выходной поток cout. Аналогично, заголовочный файл fstream.h определяет класс выходного файлового потока с именем ofstream. Используя объекты класса ofstream, программы могут выполнять вывод в файл. Для начала вы должны объявить объект типа ofstream, указав имя требуемого выходного файла как символьную строку, что показано ниже:
ofstream file_object("FILENAME.EXT");
Если вы указываете имя файла при объявлении объекта типа ofstream, C++ создаст новый файл на вашем диске, используя указанное имя, или перезапишет файл с таким же именем, если он уже существует на вашем диске.
Следующая программа создает объект типа ofstream и затем использует оператор вставки для вывода нескольких строк текста в файл:
#include <iostream.h>
#include <fstream.h>
int main()
{
ofstream f("D://file.txt");
f << " Today thursday"<<'\n';
f<< "31.03.11";
}
В данном случае программа открывает файл file.txt и затем записывает строку в файл, используя оператор вставки.
Для того, чтобы считать данные из файла, необходимо создать объект типа ifstream (подготовить файл для чтения), указав в качестве параметра имя файла:
ifstream input_file("filename.EXT");
Следующая программа открывает файл file.txt , который был создан с помощью предыдущей программы, и читает, а затем отображает элементы файла:
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
int main()
{
ifstream rf("D://file.txt") ; //связываем rf с файлом на диске
char one[64], two[64];
rf >> one; //считываем из файла данные в переменную one
rf >> two;
cout << one << endl;
cout << two << endl;
getch();
}
Если вы откомпилируете и запустите эту программу, то, вероятно, предположите, что она отобразит первые 2 строки файла. Однако, подобно cin, входные файловые потоки используют пустые символы, чтобы определить, где заканчивается одно значение и начинается другое. В результате при запуске предыдущей программы на дисплее появится следующий вывод:
Today
thursday
Поэтому необходимо использовать getline для чтения строки файлового ввода. Следующая программа использует функцию getline для чтения всех трех строк файла:
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
int main()
{
ifstream rf("D://file.txt") ;
char one[64], two[64];
rf.getline(one, sizeof(one)) ;
rf.getline(two, sizeof(two));
cout << one << endl;
cout << two << endl;
getch();
}
В данном случае программа успешно читает содержимое файла, потому что она знает, что файл содержит три строки. Однако во многих случаях ваша программа не будет знать, сколько строк содержится в файле. В таких случаях ваши программы будут просто продолжать чтение содержимого файла пока не встретят конец файла.