Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы Тех.програм.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
291.5 Кб
Скачать
  1. Комбинированный тип данных – запись.

  1. Все структурированные типы данных, с которыми мы уже познакомились, представляют собой совокупности однотипных величин. Комбинированный тип данных — это структурированный тип, состоящий из фиксированного числа компонент (полей) разного типа. Комбинированный тип имеет еще и другое название — запись.

  2. Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту. Например, анкетные сведения о студенте вуза могут быть представлены в виде информационной структуры (рис. 35).

  3. Такая структура называется двухуровневым деревом. В Паскале эта информация может храниться в одной переменной типа Record (запись). Задать тип и описать соответствующую переменную можно следующим образом:

  4. Type Anketa1=Record

  5. FIO: String[50];        {поля}

  6. Pol: Char;

  7. Dat: String[16];        {записи}

  8. Adres: String[50];

  9. Curs: 1..5;             (или элементы)

  10. Grup: 1..10;

  11. Stip: Real              {записи}

  12. End;

  13. Var Student: Anketa1;

  14. Такая запись, так же как и соответствующее ей дерево, называется двухуровневой.

  15. К каждому элементу записи можно обратиться, используя составное имя, которое имеет следующую структуру:

  16. <имя переменной>.<имя поля>

  17. Например, student. fio; student. dat и т.п. Если, например, требуется полю курс присвоить значение 3, то это делается так:

  18. Student.Curs:=3 ;

  19. Поля записи могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в том случае, когда требуется представить многоуровневое дерево (более 2 уровней). Например, те же сведения о студентах можно отобразить трехуровневым деревом (рис.36).

  20. Такая организация данных позволит, например, делать выборки информации по году рождения или по городу, где живут студенты. В этом случае описание соответствующей записи будет выглядеть так:

  21. Type Anketa2=Record

  22. FIO: String[50];

  23. Pol: Char;

  24. Dat: Record

  25. God: Integer;

  26. Mes: String[10];

  27. Den: 1..31

  28. End;

  29. Adres: Record

  30. Gorod: String[20];

  31. UlDomKv: String[30];

  32. End;

  33. Curs: 1..5 ;

  34. Grup: 1..10;

  35. Stip: Real

  36. End;

  37. Var Student: Anketa2;

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

  39. Например, student.Dat.God; student.Adres.Gorod.

  40. Приведем структурограмму задания комбинированного типа (рис.37).

  41. В программе могут использоваться массивы записей. Если на факультете 500 студентов, то все анкетные данные о них можно представить в массиве:

  1. Работа с файлами

Для работы с файлами необходимо подключить заголовочный файл <fstream>В <fstream> определены несколько классов и подключены заголовочные файлы <ifstream> - файловый ввод и  <ofstream>  - файловый вывод.

Файловый ввод/вывод аналогичен стандартному вводу/выводу, единственное отличие – это то, что ввод/вывод выполнятся не на экран, а в файл. Если ввод/вывод на стандартные устройства выполняется с помощью объектов cin и cout, то для организации файлового ввода/вывода достаточно создать собственные объекты, которые можно использовать аналогично операторам cin и cout.

Например, необходимо создать текстовый файл и записать в него строку Работа с файлами в С++. Для этого необходимо проделать следующие шаги:

  1. создать объект класса ofstream;

  2. cвязать объект класса с файлом, в который будет производиться запись;

  3. записать строку в файл;

  4. закрыть файл.

Почему необходимо создавать объект класса ofstream, а не класса ifstream? Потому, что нужно сделать запись в файл, а если бы нужно было считать данные из файла, то создавался бы объект класса ifstream.

1

2

// создаём объект для записи в файл

ofstream /*имя объекта*/; // объект класса ofstream

Назовём объект – fout, Вот что получится:

1

ofstream fout;

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

1

fout.open("cppstudio.txt"); // связываем объект с файлом

Через операцию точка получаем доступ к методу класса open(), в круглых скобочках которого указываем имя файла. Указанный файл будет создан в текущей директории с программой. Если файл с таким именем существует, то существующий файл будет заменен новым. Итак, файл открыт, осталось записать в него нужную строку. Делается это так:

1

fout << "Работа с файлами в С++"; // запись строки в файл

Используя операцию передачи в поток совместно с объектом fout строка Работа с файлами в С++ записывается в файл. Так как больше нет необходимости изменять содержимое файла, его нужно закрыть, то есть отделить объект от файла.

1

fout.close(); // закрываем файл

Итог – создан файл со строкой Работа с файлами в С++.

Шаги 1 и 2 можно объединить, то есть в одной строке создать объект и связать его с файлом. Делается это так:

1

ofstream fout("cppstudio.txt"); // создаём объект класса ofstream и связываем его с файлом cppstudio.txt

Объединим весь код и получим следующую программу.

  • MVS

  • Code::Blocks

  • Dev-C++

  • QtCreator

1

2

3

4

5

6

7

8

9

10

11

12

13

14

// file.cpp: определяет точку входа для консольного приложения.

 

#include "stdafx.h"

#include <fstream>

using namespace std;

 

int main(int argc, char* argv[])

{

    ofstream fout("cppstudio.txt"); // создаём объект класса ofstream для записи и связываем его с файлом cppstudio.txt

    fout << "Работа с файлами в С++"; // запись строки в файл

    fout.close(); // закрываем файл

    system("pause");

    return 0;

}

Осталось проверить правильность работы программы, а для этого открываем файл cppstudio.txt и смотрим его содержимое, должно быть - Работа с файлами в С++.

Для того чтобы прочитать файл понадобится выполнить те же шаги, что и при записи в файл с небольшими изменениями:

  1. создать объект класса ifstream и связать его с файлом, в который будет производиться запись;

  2. прочитать файл;

  3. закрыть файл.