Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Praktikum_programmirovanie.doc
Скачиваний:
30
Добавлен:
30.03.2015
Размер:
15.88 Mб
Скачать

Постановка задачи

  1. Сформировать динамический массив из элементов структурного типа. Структурный тип определен в варианте.

  2. Распечатать сформированный массив.

  3. Выполнить поиск элементов в массиве, удовлетворяющих заданному в варианте условию и сформировать из них новый массив.

  4. Распечатать полученный массив.

Варианты

варианта

Структура

Критерий для поиска в массиве структур

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();

}

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]