|
Программирование >> Структурное программирование
а объект inReceivable класса istream ссылается на файл receiv-able.dat . inReceivable >> account >> company >> amount; c) Файл too.dat должен быть открыт для добавления данных в файл без уничтожения текущих данных. ofstream outTools( tools.dat , ios::out); Ответы на упражнения для самопроверки 14.1. а) единиц и нулей. Ь) бит. с) Файл, d) символами, е) базой данных, f) close, g) get. h) get, getline. i) open, j) read, k) seekg, seekp. 14.2. a) Неверно. Функция read может быть использована для чтения данных из любого объекта потока, производного от istream. b) Неверно. Эти четыре потока создаются автоматически. Для использования потоков в файл должен быть включен заголовочный файл <iostream.h>. Он содержит объявления всех этих объектов потоков. c) Неверно. Файлы закрываются, когда выполняются деструкторы объектов классов ifstream, ofstream или fstream, а это происходит, когда объекты потоков выходят из области действия или перед завершением выполнения программы; но, все же, хорошим стилем программирования является закрытие всех файлов явным образом с помощью функции close, когда уже нет потребности в этих файлах. d) Неверно. Для установки указателей позиции put и get на начало файла могут быть использованы функции-элементы seekg и seekp. e) Верно. f) Неверно. В большинстве случаев записи последовательного файла не имеют одинаковой длины. Следовательно, вполне возможно, что обновление записи приведет к необходимости перезаписать остальные данные. g) Верно. h) Неверно, но обычно, действительно, записи в файле произвольного доступа имеют одинаковую длину. i) Неверно. Возможен поиск от начала файла, от его конца или от текущей записи файла. 14.3.а) ifstream inOldMaster( oldmast.dat , ios::in); b) ifstream Transaction( trans.dat , ios::in); c) ofstrem outNewMaster( newmast.dat , ios::out); d) InOldMaster >> accountNum >> name >> currentBalance; e) inTransaction accountNum >> dollarAmount; f) outNewMaster << accountNum name << currentBalance; 14.4. a) Ошибка: файл payables.dat должен быть открыт до попытки вывести данные в поток. b) состоит из нескольких полей. c) Поле, которое может содержать только цифры, буквы и пробелы, называются полем. d) Для обеспечения поиска заданных записей в файле одно поле в каждой записи выбирается в качестве . e) Подавляющее большинство сведений в компьютерной системе хранится в . f) Группа связных символов, имеющая некоторый смысл, называется . g) Объектами стандартных потоков, объявленных при помощи заголовочного файла <iostream.h>, являются , и . h) Функция-элемент класса ostream выводит символ в заданный поток. i) Функция-элемент класса ostream обычно используется для записи данных в файл произвольного доступа. j) Функция-элемент класса istream изменяет позицию указателя позиции файла. 14.6. Установите, какие из перечисленных ниже утверждений являются истинными, а какие - ложными (и для ложных, объясним причину). a) Впечатляющие функциональные возможности компьютера по существу сводятся к манипуляциям с нулями и единицами. b) Пользователи предпочитают манипулировать с битами вместо символов и полей, поскольку биты более компактны. c) Пользователи формируют программы и элементы данных символами; компьютеры затем манипулируют с этими данными и обрабатывают эти символы как группы из нулей и единиц. d) Почтовый пятизначный код является примером числового поля. e) Адрес человека обычно принимается в приложениях для компьютера как текстовое поле. Исправление: используйте для открытия payables.dat на вывод функцию-элемент open класса ostream. b) Ошибка: используется неверный объект inPayable класса ifstream для чтения из файла payables.dat . Исправление: используйте объект inPayable класса istream для об-раш;ения к файлу payables.dat . c) Ошибка: содержимое файла отбрасывается, потому что файл открыт для вывода (ios::out). Исправление: для добавления данных в файл или откройте его для обновления (ios::ate), или откройте для добавления в конец (ios::app). Упражнения 14.5. Заполните пробелы в приведенных ниже примерах: а) Компьютеры хранят большие объемы данных в устройствах внешней памяти таких, как . f) Элементы данных представляются в компьютерах в виде иерархии данных, в которой элементы данных становятся все больше и сложнее по мере продвижения от полей к символам, затем к битам и т.д. g) Ключ записи идентифицирует запись как принадлежаш;ую конкретному полю. h) Большинство организаций хранит всю свою информацию в единственном файле для облегчения процесса компьютерной обработки. i) Каждый оператор, который обрабатывает файл программы на С-Ы-, явным образом обращается к этому файлу по имени. j) Когда программа создает файл, он автоматически сохраняется для последующих ссылок. 14.7. В упражнении 14.3 читатель должен был записать ряд простых операторов. Фактически эти операторы формируют ядро важного типа программы по обработке файлов, а именно, программы согласования файлов. При обработке коммерческих данных обычно в каждой прикладной системе имеется несколько файлов. Б счетах по дебиторской задолженности, в частности, обычно основной файл содержит детальную информацию о каждом клиенте, например, такую: имя клиента, адрес, номер телефона, баланс по неоплаченным счетам, кредитный лимит, условия дисконтирования, соглашение по контракту и, возможно, краткое изложение сведений о последних закупках и наличных платежах. Когда поступает информация об операциях (например, совершены продажи, по почте получены счета по наличным платежам), она вводится прямо в файл. В конце определенного расчетного периода (некоторых компаниях - это месяц, в других - неделя или день) файл текущих операций (в упражнении 14.3 он назван trans.dat ) вносится в основной файл (названный oldmast.dat в упражнении 14.3) и таким образом обновляются записи счетов по покупкам и платежам. На время обновления основной файл переписывается в новый файл (названный newmast.dat ), который затем используется в конце следующего расчетного периода для начала нового процесса обновления. Программа согласования файлов сталкивается с определенными трудностями, которые не существуют в программах с единственным файлом. Например, согласование не всегда происходит. Клиент основного файла может не выполнить никаких сделок и платежей за данный расчетный период и, следовательно, ни одна запись для этого пользователя не появится в файле текущих операций. Аналогично, клиент, который совершил некоторые операции, может быть только что вошел в данное сообщество и тогда компания еще не создавала запись для этого клиента в основном файле. Используйте операторы, написанные в упражнении 14.3, как основу для написания полноценной программы по кредитной задолженности с согласованием файлов. Используйте номер счета в каждом файле как ключ записи для целей согласования. Полагайте, что каждый файл является файлом с последовательным доступом с записями, хранимыми в порядке возрастания номера счета.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |