МУ_ЛР7_ОП (1079938), страница 6

Файл №1079938 МУ_ЛР7_ОП (Методические указания к лабораторным работам) 6 страницаМУ_ЛР7_ОП (1079938) страница 62018-01-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

memcpy( pMasNew + p , &SAdd , sizeof(Student));

StudMasToFileWR( "BDStud.bin" , pMasNew , RazmF + 1 );

free ( pMasNew );

printf( "ПОСЛЕ ДОБАВЛЕНИЯ (по номеру)!\n" ); //

StudPrintFileWR( "BDStud.bin");

Результат работы фрагмента текста (NumAdd= 2):

ДО ДОБАВЛЕНИЯ (по номеру)!

Запись: Имя = Второй Номер = 2 Стипендия = 2000,00

Запись: Имя = Третий Номер = 3 Стипендия = 3000,00

Запись: Имя = Четвертый Номер = 4 Стипендия = 4000,00

ПОСЛЕ ДОБАВЛЕНИЯ (по номеру)!

Запись: Имя = Второй Номер = 2 Стипендия = 2000,00

Запись: Имя = ADDED Номер = 33 Стипендия = 15,00

Запись: Имя = Третий Номер = 3 Стипендия = 3000,00

Запись: Имя = Четвертый Номер = 4 Стипендия = 4000,00

39 Модификация записи в двоичном файле.

Фрагмент программы для модификации одной записи в существующем двоичном файле структур. Операция выполняется через прямое чтение записи по номеру, ее изменения и запись на тоже место модифицированной записи. Нумерация записей при удалении начинаетчи с единицы.

// ИЗМЕНЕНИЕ ЗАПИСИ

int nChange = 3;

Student SBuf;

printf( "ДО ИЗМЕНЕНИЯ (по номеру = %d)!\n" , nChange ); //

system("attrib -R BDStud.bin ");

StudPrintFileWR( "BDStud.bin");

pF = fopen( "BDStud.bin" , "r+b"); // Открытие файла для чтения и записи

if (filelength(pF->_file)/sizeof(Student) >= nChange )

{

Pos1 = fseek( pF, (nChange - 1)*sizeof(Student), SEEK_SET);//Перемещение указателя на (nChange-1)

fread( &SBuf, sizeof(Student) , 1, pF); // чтение одной записи

strcpy(SBuf.Name , "ИЗМЕНЕНИЕ!");

Pos1 = fseek( pF, (nChange - 1)*sizeof(Student), SEEK_SET); // Перемещение указателя на (nChange-1)

fwrite( &SBuf, sizeof(Student) , 1, pF); // запись одной записи

}

else

printf( "Ошибка номера записи- %d !\n" , nChange ); // Ошибка номера

fclose( pF );

printf( "ПОСЛЕ ИЗМЕНЕНИЯ (по номеру = %d)!\n" , nChange ); //

StudPrintFileWR( "BDStud.bin");

Результат работы фрагмента текста (nChange = 3):

ДО ИЗМЕНЕНИЯ (по номеру = 3)!

Запись: Имя = Второй Номер = 2 Стипендия = 2000,00

Запись: Имя = Первый Номер = 1 Стипендия = 1000,00

Запись: Имя = Третий Номер = 3 Стипендия = 3000,00

Запись: Имя = Четвертый Номер = 4 Стипендия = 4000,00

ПОСЛЕ ИЗМЕНЕНИЯ (по номеру = 3)!

Запись: Имя = Второй Номер = 2 Стипендия = 2000,00

Запись: Имя = Первый Номер = 1 Стипендия = 1000,00

Запись: Имя = ИЗМЕНЕНИЕ! Номер = 3 Стипендия = 3000,00

Запись: Имя = Четвертый Номер = 4 Стипендия = 4000,00



40 Программа сравнения двух файлов.

/0.12. Функция сравнения двух файлов.

char FileName1[]="File1.txt";

char FileName2[]="File2.txt";

FILE * pF1;

FILE * pF2;

int flag = 0;

pF1 = fopen( FileName1 , "r"); // Открытие для чтения

pF2 = fopen( FileName2 , "r"); // Открытие для чтения

if ( pF1 != NULL || pF2 != NULL)

{

while (!feof(pF1)&&!feof(pF2))

{

char ch1 = getc(pF1);

char ch2 = getc(pF2);

int fl1 =feof(pF1);

int fl2 =feof(pF2);

if ( ch1 != ch2 ) { flag = 1; break ;};

if ( feof(pF1) != feof(pF2)) { flag = 1; break ;};

};

if( flag == 1) printf( "Файлы %s и %s не равны!\n" , FileName1 , FileName2 );

else printf( "Файлы %s и %s равны!\n" , FileName1 , FileName2 );

fclose(pF1);

fclose(pF1);

};

41 Программа печати списка текстовых файлов из параметров командной строки.

// Ввод из файл ов по списку аргументоа (gets)

char FName[32] = "";

int ArgCount = 1;

while ( ArgCount < Argc )

{

strcpy ( FName , Argv[ArgCount]);

///

pF = fopen( FName , "r"); //Открытие текстового файла для чтения

//

printf( "\nФайл - %s\n" , FName);

fgets( line , 80 , pF );

while (!feof(pF)|| strlen(line) !=NULL )

{

printf( "%s", line);

line[0] ='\0'; // для обнуления строки при новом чтении из файла

fgets( line , 80 , pF ); // Чтение строки из файла

};

fclose(pF); // Закрытие файла

///

ArgCount ++; // Новый файл из списка аргументов командной строки

};

Нужно создать пустой проект в MS VS, как описано выше, скопировать через буфер обмена в него текст данного примера, отладить его и выполнить.

42 Контрольные задания ЛР №7.

43 Запись простого файла текстовыми данными и его чтение

Создать и заполнить в цикле текстовый файл из массива строк. Массив инициализируется строками с фамилиями студентов вашей группы. После создания файл (а не массив) прочитать и распечатать. Продемонстрировать преподавателю содержание файла с использованием файл менеджера (можно Far).

44 Создать функцию распечатки текстового файла по строкам

Сделать и проверить функцию (PrintTextFile) распечатки текстового файла. Проверить ее по шагам в отладчике. Распечатать файл предыдущего задания этой функцией.

45 Сделать функцию копирования текстовых файлов

Сделать программу для копирования текстового файла в другой текстовый файл. Программу копирования оформить в виде функции (CopyFile). После копирования распечатать файлы с помощью своей функции PrintTextFile.

46 Программа для слияния 2-х файлов в результирующий файл.



Сделать программу для слияния двух файлов, имена которых заданы в командной строке. Тип файла : текстовый или двоичный задается вариантом. Исходные файлы и результирующий файл распечатать (PrintTextFile). Если исходные файлы не найдены, то выдать сообщение об ошибке.

47 Запись двоичного файла случайными данными и его чтение

Для своей структуры по варианту создается двоичный файл и заполняется данными. Одно из полей записи должно формироваться датчиком случайных чисел (функция rand). Символьное поле заполняется из массива строк значениями, осмысленными для своей структуры. Число генерируемых записей задается по варианту: фиксировано (целая константа), переменная этапа компиляции (#define) или константная переменная (const int). После заполнения файл распечатать. Для решения задачи использовать пример из теоретической части данных методических указания (раздел “ Работа с текстовым файлом построчно ”). Файл распечатать на основе своей функции.

48 Поиск заданного текста в строках текстового файла.

В двоичном файле, созданном ранее, выполняется поиск осмысленного символьного значения. При этом записи последовательно считываются из файла и сравниваются с искомым эталоном. Напечатать запись и ее номер в файле.

49 Функция записи в файл из массива своих структур

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

50 Функция записи из файла в массив своих структур

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

51 Поиск минимума в файле по числовому полю

В своем файле из записей структурных переменных найти запись с минимальным значением. Тип поля взять из списка вариантов.

52 Варианты заданий для студентов СУЦ.

Варианты заданий приведены ниже. Номер варианта должен соответсвовать номеру студента в групповом журнале.

п/п

Структура ДЗ

5 полей, 3 первых из них числовые

Задание числа записей в файле при генерации

Типы файла для слияния

Поле для случайной генерации

Поле для поиска минимума в файле

Кафедра

10 (фикс.)

Текстовый

Целое

Вещественное

Книга

#define

Двоичный

Вещественное

Целое

Файл

Const int

Текстовый

Символьное

Вещественное

Автомобиль

10 (фикс.)

Двоичный

Целое

Целое

Компьютер

#define

Текстовый

Вещественное

Вещественное

Группа

Const int

Двоичный

Символьное

Целое

Человек

10 (фикс.)

Текстовый

Целое

Вещественное

Стеллаж

#define

Двоичный

Вещественное

Целое

Дом

Const int

Текстовый

Символьное

Вещественное

Студент

#define

Двоичный

Символьное

Целое

53 Дополнительные требования для студентов СУЦ (д.т.).

Для продвинутых студентов, по желанию, можно построить программу с дополнительными требованиями. Дополнительные требования выполняются в дополнение основным требованиям ЛР.

54 Сделать функцию копирования файлов

Весь файл считывается в память единым фрагментом, а затем целиком копируется в новый файл. Имена файлов заданы в параметрах командной строки (аргументы main).

55 Слияние 2-х двоичных файлов в третий.

Оба файла считываются в память едиными фрагментами, сливаются в единый фрагмент, а затем целиком копируются в новый файл. Имена файлов заданы в аргументах командной строки (аргументы main).

56 Программа печати списка файлов на основе списка, заданного в другом файле.

Распечатывается список файлов, перечень которых задан в отдельном текстовом файле. Имя этого файла задано аргументом командной строки (аргументы main).

57 Функция чтения файла в список структур

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

58 Функция записи файла из списка структур

Из списка, заполненного своими структурами, выполняется запись в последовательный двоичный файл. Фал распечатывается.

59 Поиск заданного текста и целого числа в полях записи двоичного файла.

В двоичном файле, созданном на основе своей структуры, выполняется поиск подстроки на совпадение в одном из символьных полей (по выбору, например, в фамилии) и/или целочисленного значения на совпадение. Управление поиском: только подстрока, толлько число или и подстрока и число, задается значением шаблонов поиска: шаблон подстроки – пустая строка, а шаблон числа – нуль. Файл, критерии поиска и результат поиска распечатать.

60 Сортировка в двоичном файле по символьному полю.

Выполнить сортировку в двоичном файле структур по символьному полю записи. Сортировка может быть по возрастанию и по убыванию. Строчные и прописные символы различаются. Проверить и, при необходимости настроить, сортировку по русскому тексту (локализация). Результат до сортировки и после распечатать.

61 Сортировка в двоичном файле по действительному полю.

Выполнить сортировку в двоичном файле структур по целочисленному полю записи. Сортировка может быть по возрастанию и по убыванию. Строчные и прописные символы различаются. Результат до сортировки и после распечатать.

62 Демонстрация, защита ЛР и отчет по ЛР.



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

63 Контрольные вопросы по ЛР.



  1. Что можно делать с данными в программе?

  2. Дайте определение понятия файл.

  3. Какие разновидности определений понятия файл вы знаете?

  4. Зачем нужно обозначать конец файла, и как он задается?

  5. Что такое поток ввода вывода, какая система ими управляет?

  6. Как ОС управляет файлами и устройствами?

  7. Какие основные типы файлов вы знаете?

  8. Как задается имя файла и его расширение? В разных файловых системах?

  9. Какие важнейшие характеристики файлов вы знаете?

  10. Зачем используются операции открытия и закрытия файлов?

  11. Что такое дескриптор файла?

  12. Как программе описывается файл, дескриптор файла?

  13. Какие режимы открытия файлов вы знаете?

  14. Какой тип файлов соответствует программам в компьютере?

  15. Какие основные операции работы с файлами вы знаете?

  16. Какие уровни работы с файлами вы знаете?

  17. Как описать структуру FILE? Как она используется?

  18. Чем отличаются текстовые и двоичные файлы?

  19. Как в программе выполняется проверка конца файла?

  20. Какие функции и библиотеки используются для ввода и вывода в СИ?

  21. Какие функции используются для чтения файлов?

  22. Какие функции используются для записи файлов?

  23. Какие функции позволяют работать с файлом вцелом?

  24. Какие библиотеки нужно подключить для низкоуровневого ввода и вывода?

  25. Как можно перемещаться по файлу при работе с ним?

  26. Как перенаправить стандартные потоки ввода и вывода?

  27. Для чего нужны файл менеджеры? Какие из нмх вы знаете?

  28. Как работать с консолью ввода и вывода?

64 Литература.

Основная литература

  1. Список литературы, доступные книги и необходимые пособия для ЛР ОП размещены на сайте www.sergebolshakov.ru на страничке “2-й к СУЦ”. Пароль для доступа можно взять у преподавателя или старосты группы.

  2. Керниган Б., Ритчи Д. К36 Язык программирования Си.\Пер. с англ., 3-е изд., испр. - СПб.: "Невский Диалект", 2001. - 352 с.: ил.

  3. Касюк, С.Т. Курс программирования на языке Си: конспект лекций/С.Т. Касюк. — Челябинск: Издательский центр ЮУрГУ, 2010. — 175 с.

  4. MSDN Library for Visual Studio 2005 (Vicrosoft Document Explorer – входить в состав дистрибутива VS. Нужно обязательно развернуть при установке VS VS или настроить доступ через Интернет.)

Дополнительная литература

  1. Общее методическое пособие по курсу для выполнения ЛР и ДЗ (см. на сайте 1-й курс www.sergebolshakov.ru) – см. кнопку в конце каждого раздела сайта!!!

  2. Другие методические материалы по дисциплине с сайта www.sergebolshakov.ru.

  3. Конспекты лекций по дисциплине “Основы программирования”.

  4. Подбельский В.В. Язык Си++: Учебное пособие. – М.: Финансы и статистика, 2003.

  5. 5. Подбельский В.В. Стандартный СИ++: Учебное пособие. – М.: Финансы и статистика, 2008.

  6. Г. Шилдт “С++ Базовый курс”: Пер. с англ.- М., Издательский дом “Вильямс”, 2011 г. – 672с

  7. Фридланд А.Я. Информатика и компьютерные технологии. Основные термины: толковый слов. : 3-е изд. Испр. и доп./ А.Я. Фридланд, Л.С. Хааамирова, И.А. Фридланд. – М.:ООО «Издательство Астрель»: ООО «Издательство АСТ». 2003 – 272с.

  8. Г. Шилдт “С++ Руководство для начинающих” : Пер. с англ. - М., Издательский дом “Вильямс”, 2005 г. – 672с

  9. Г. Шилдт “Полный справочник по С++”: Пер. с англ.- М., Издательский дом “Вильямс”, 2006 г. – 800с

  10. Бьерн Страуструп "Язык программирования С++"- М., Бином, 2010 г.



65 Приложение: фрагменты программ для низкоуровневого ввода и вывода

66 Запись из массива в файл _write.

В данном разделе приведем два варианта записи массива структур в файл: низкоуровневый и на основе потоков. Используем структуру Student:

Характеристики

Тип файла
Документ
Размер
576 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Методические указания к лабораторным работам
ЛР9_ПКШ
ЛР10_ПКШ
ЛР11_ПКШ
ЛР_12_КЛР_ПКШ
ЛР_13_КЛР_ПКШ
ЛР_14_КЛР_ПКШ
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7027
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее