Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 13 РАБОТА С ФАЙЛАМИ

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 31.5.2024

Лабораторная работа № 13

РАБОТА С ФАЙЛАМИ. ВВОД И ВЫВОД ИНФОРМАЦИИ

1 Цель и порядок работы

Цель работы – изучить принципы работы с файлами средствами языка C sharp.

Порядок выполнения работы:

  •  ознакомиться с описанием лабораторной работы;
  •  получить задание у преподавателя по вариантам;
  •  разработать схему алгоритма решения задачи;
  •  написать программу, соответствующую схеме алгоритма;
  •  ввести программу, отладить и выполнить ее на ЭВМ;
  •  оформить отчет.

2 Общие сведения

Часто при программировании нужно манипулировать с файлами(копирование, считывание, запись..). Для этого в C# встроены основные возможности.

2.1 Пространство имен System.IO

В библиотеки .NET Framework более чем 2500 классов. Все они является потомками класса System.Object. При объявлении класса обычно не указывается System.Object (это добавляется по умолчанию), хотя это и можно сделать и явно:

class MyClass:System.Object

{

 ...

}

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

Рис.1 Пространство имен System.IO

Классы Directory и File яляются прямыми потомками класса Object и содержат статические методы для выполнения различных операций с папками и файлаи (создание, удаление, проверка существования, и т. п.).

Класс Path - прямой потомок класса Object содержат статические методы для работы с путями и именами файлов.

Классы BinaryReader и BinaryWriter, также примые наследники класса Object, содержат статические методы для чтения и записи примитивных типов данных как бинарных значений. Он содержит методы для каждого типа (ReadBoolean, ReadByte, ReadBytes, ReadChar, ReadChars, ReadDecimal, ReadDouble и т.д.).

Классы DirectoryInfo и FileInfo - потомками абстрактного класса FileSystemInfo содержат нестатические методы для выполнения операций с папками и файлами (создание, удаление, проверка существования, и т. п.). Для использования данных классов требуется создать их экземпляры. Классы FileInfo и DirectoryInfo являются "запечатанными" классами (sealed classes) - мы можем создавать экземпляры этих классов, но наследовать от них невозможно.

Класс Stream - наследник абстрактного класса MarhalByRefObjekt - также абстрактный класс, обеспечивающий представление последовательности байтов. Классы наследники класса Stream, обеспечивают функции для работы с файлами (класс FileStream), памятью (класс MemoryStream) и дают возможность создать буфер в памяти для буферизованных потоковых операций чтения и записи (BufferedStream). Потоки поддерживают операции чтения, записи, а также операции позиционирования.

Классы TextReader и TextWriter используется для чтения и записи последовательности символов потоков. Их наследники StreamReader, StringReader, StreamWriter, StringWriter обеспечивают возможность чтения и записи строк и символов в строках.

2.2 Класс File и его использвание

Класс File содержит набор статических методов, которые могут быть использованы для создания, открытия, копирования, удаления и перемещения файлов. Некоторые из методов класса File (например Create()) создают объекты типа FileStream или StreamWriter. При рассмотрении методов класса пока не будем заострять внимание на возможных прерываниях при использовании методов класса (об этом более подробно при рассмотрении методов класса FileInfo - прерывания у методов обоих классов идентичны). Рассмотрим основные методы класса:

  •  Delete(string path) - удаляет файл c именем и в каталоге, определенным path.
  •  Exists(string path) - проверяет наличие файла в указанном каталоге - при наличии файла возвращает true.
  •  Create(string path), или Create (string path, int bufersize), используется для создания файла c именем и в каталоге, определенным path и с указанным размером буфера. Методы возвращают объект типа FileStream. Исключение возникает, если диск закрыт для записи.

//Символ @ блокирует использование косой черты

//как маркера начала спецсимвола

 string path = @"c:\a.txt";

 //Испрользование методов Exists() и Delete()

if(File.Exists(path))

{

 File.Delete(path);

}

//Создаем файл и объект streamwriter, который будет

//существовать до закрытия фигурной скобки

using(FileStream filestream = File.Create(path, 1024))

 {

 Byte[] text =

  new UTF8Encoding(true).GetBytes("Текст, который будет записан в файл");

 filestream.Write(text, 0, text.Length);

 }

  •  Open(string path,FileMode mode,FileAccess acess,FileShare share) - открывает файл по указанному пути, с указанным режимом чтения, зписи и доступа для чтения - записи и указанной опцией совместного использования. При открытии создает объект типа FileStream. Обязательными параметрами являются только первые два.

string path = @"c:\c.txt";

 //Открываем файл и создаем объект filestream, который будет

//существовать до закрытия фигурной скобки

using(FileStream filestream =

  File.Open(path,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite))

 {

 byte[] bText = new byte[1024];

 UTF8Encoding text = new UTF8Encoding(true);

 while(filestream.Read(bText,0,bText.Length) > 0)

 {

  richTextBox1.AppendText(text.GetString(bText)+"\r\n");

 }

 try

 {

  using(FileStream filestream2

    = File.Open(path,FileMode.Open,FileAccess.Read,FileShare.ReadWrite))

  {

   Text="Файл открыт дважды.";               

  }

 }

 catch(Exception ex)

 {

  string message=ex.Message;

  Text="Файл не может быть открыт дважды.";

 }

Данный фрагмент при опции совместного использования при FileShare.None выведет в заголовок текст:

Text="Файл не может быть открыт дважды.";

а при FileShare.ReadWrite для обоих методов Open (опция может быть только одна и таже).

Text="Файл открыт дважды.";               

  •  CreateText(string path) создает файл, который будет открыт для запии. Метод возвращает объект типа StreamWriter, который может быть использован для записи текста в файл. Исключение возникает, если диск закрыт для записи.

string path = @"c:\a.txt";

 //Метод  Exists - проверяет наличие файла

if(!File.Exists(path))

{

 //Создаем файл и объект streamwriter, который будет

 //существовать до закрытия фигурной скобки

 using(StreamWriter streamwriter = File.CreateText(path))

 {

  streamwriter.WriteLine("Строка 1");

  streamwriter.WriteLine("Строка 2");

  streamwriter.WriteLine("Строка 3");

 }    

}

  •  OpenText(string path) используется для открытия существующего текстового файла и создания объекта типа StreamReader:

using(StreamReader streamreader = File.OpenText(path))

 {

  string sString = "";

  while((sString = streamreader.ReadLine()) != null)

  {

   richTextBox1.AppendText(sString+"\r\n");

  }

 }

  •  AppendText(string path) создает объект типа StreamWriter, который можно использовать для добавления текта в кодировке UTF-8 в конец фйла. Добавим код добавления строк в конец фала к коду обработчика нажатия кнопки 1, код обработчика для кноки 2 оставим прежним и убедимся в действенности метода, выполнив приложение:

string path = @"c:\a.txt";

 //Метод  Exists - проверяет наличие файла

if(File.Exists(path))

{

 //Удаляем старый файл

 File.Delete(path);

}

if(!File.Exists(path))

{

 //Создаем файл и объект streamwriter, который будет

 //существовать до закрытия фигурной скобки

 using(StreamWriter streamwriter = File.CreateText(path))

 {

  streamwriter.WriteLine("Строка 1");

  streamwriter.WriteLine("Строка 2");

  streamwriter.WriteLine("Строка 3");

 }    

}

using(StreamWriter streamwriter = File.AppendText(path))

 {

 streamwriter.WriteLine("Строка 4");

 streamwriter.WriteLine("Строка 5");

 streamwriter.WriteLine("Строка 6");

}

  •  void Copy(string sourepath,string destpatch,bool overwrite) - копирует существующий файл по новому адресу. При overwrite=false перезапись файла при его наличии не происходит.
  •  void Move(string sourepath,string destpatch) - переносит существующий файл по новому адресу.

Примеры использования методов Copy и Move:

//Создание пустой файла - ожно без Using, но тогда надо закрыть поток

 FileStream filestream=File.Create("C:\\a.txt");

//Зкрыть - иначе файл заблокирован

filestream.Close();

//Или так

//using(FileStream filestream=File.Create("C:\\a.txt")){}

//Переноc файла a.txt в b.txt

File.Move("C:\\a.txt","C:\\b.txt");

 //Проверка существования файла   

if(File.Exists("C:\\b.txt"))

{

 // Копирование файла

 File.Copy("C:\\b.txt","C:\\d.txt");

 // Удаление файла

 File.Delete("C:\\b.txt");

}

  •  SetAttributes(string path,FileAttributes); и GetAttributes(path) - позволяют установить и получить значение атрибутов файлов. Атрибуты файлов имеют тип FileAttributes. Структура типа - набор бит (например двоичные значения для ReadOnly - 1, Hidden - 2, System - 4 и т.д.). Возможны следующие значения атрибутов:
    •  Archive - файл готов к архивированию или к удалению;
    •  Compressed - упакованный файл;
    •  Device - резерв, пока не используется;
    •  Directory - каталог;
    •  Encrypted - файл зашифрован;
    •  Hidden - скрытый файл;
    •  Normal - у файла не установлены никакие атрибуты;
    •  NotContentIndexed - файл не индексируется системой Windows Indexing System;
    •  Offline - содержимое файла не доступно в режиме офлайн;
    •  ReadOnly - только для чтения;
    •  ReparsePoint - файл содержит блок данных, ассоциированных с файлом или каталогом;
    •  SparsePoint - файл содержит большой объем пустых данных;
    •  System - файл операционной системы или используется ОС.
    •  Temporary - файл является временным файлом, созданным либо операционной системой, либо какой либо программой.

Следующий код показывает основные возможности по работе с атрибутами:

//Создание пустой файла

string path=@"C:\a.txt";

 if (!File.Exists(path))

{

 File.Create(path);

}

//Выставляем атрибут

File.SetAttributes(path, FileAttributes.ReadOnly);

//Добавляем атрибут

File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);

 //Логическое умножение - оставляем один атрибут Hidden для сравнения

 if((File.GetAttributes(path) & FileAttributes.Hidden) == FileAttributes.Hidden)

 {

 //Оставляем только для чтения и архивный

 File.SetAttributes(path,FileAttributes.Archive | FileAttributes.ReadOnly);

 }

  •  GetCreationTime(string path); GetCreationTimeUtc(string path); GetLastAccessTime(string path); GetLastAccessTimeUtc(string path); GetLastWriteTime(string path); GetLastWriteTimeUtc(string path); SetCreationTime(string path); SetCreationTimeUtc(string path); SetLastAccessTime(string path); SetLastAccessTimeUtc(string path); SetLastWriteTime(string path); SetLastWriteTimeUtc(string path); методы для установки и чтения временных параметров файлов. Методы устанавливают или читают дату и время в формате DateTime, например:
  •  DateTime datetime=File.GetCreationTime(path);
  •  Text=datetime.Date.ToString();

2.3 Класc Path и работа с файлами

Класс Path содержит набор статических методов, используемых для обработки имен файлов. Рассмотрим основные методы и свойства класса:

Таблица 1 - Методы класса Path

GetFileName(string path) 

Возвращает имя файла вместе с расширением, но без пути.

GetFileNameWithoutExtension(string path) 

Возвращает имя файла без расширения и без пути.

GetExtension(string path) 

Возвращает расширение имени файла.

GetFullPath(string path) 

Возвращает полное имя файла.

GetPathRoot(string path) 

Возвращает корневой каталог для заданного файла.

GetDirectoryName(string patch) 

Возвращает имя каталога для указанного файла.

GetTempFileName() 

Возвращает уникальное имя временного файла и создает файл нулевой длины с данным именем.

2.4  Класcы FileSystemInfo и FileInfo и работа с файлами

Класс FileInfo наследник абстрактного класса FileSystemInfo используется для создания, копирования, удаления, перемещения, и открытия файлов, и при использовании ряда методов создает объекты типа FileStream.

Класcы FileSystemInfo содержит свойства и методы, общие для управления файлами и директориями (табл.2 ).

Таблица 2 - Методы класса FileSystemInfo

Attributes

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

Exists 

Свойство используется для проверки существования файла.

Delete() 

Метод позволяет удалить файл.

CreationTime, LastAccessTime, LastWriteTime

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

Примеры использования:

  •  Exists 

string path = @"C:\b.txt";

FileInfo fileinfo = new FileInfo(path);

if(!fileinfo.Exists) Text="Файл не существует";

  •  Delete().

string path = @"C:\a.txt";

 //Создаем файл пока известным нам способом

 using(FileStream filestream=File.Create(path)){}    

 //Создаем экземпляр класса

FileInfo fileinfo = new FileInfo(path);

if(fileinfo.Exists)

{

 Console.Write(“Здесь файл существует \r\n");

}

fileinfo.Delete();

fileinfo = new FileInfo(path);

if(!fileinfo.Exists)

{

Console.Write ("А здесь уже не существует");

}

Класс FileInfo добавляет дополнительные методы для работы с файлами:

  •  Create() - метод используется для создания файла. Метод возвращает объект типа FileStream;

string path = @"C:\a.txt";

FileInfo fileinfo = new FileInfo(path);   

using(FileStream filestream=fileinfo.Create()){}

Информацию в созданный файл можно записать аналогично как это делалось выше с использованием FileStream. В приведенном ниже коде показано также как записать текст в русской кодировке c использованием System.Text.Encoding.Default.

string path = @"C:\a.txt";

FileInfo fileinfo = new FileInfo(path);

using(FileStream filestream=fileinfo.Create())

 {

 string sString = "Текст, который будет записан в файл";               

 Byte[] bText = System.Text.Encoding.Default.GetBytes(sString);               

 int iByteCount = System.Text.Encoding.Default.GetByteCount(sString);

 filestream.Write(bText,0,iByteCount);   

}    

//Просмотрим записанный текст в TextBox

System.IO.StreamReader streamReader;   

streamReader = new System.IO.StreamReader(path,

 System.Text.Encoding.Default);   

textBox1.Text = streamReader.ReadToEnd();

 streamReader.Close();

  •  MoveTo(string pathdest) - метод используется для переименования или перемещения файла. Метод вызывает прерывание ввода вывода при отсутствии файла источника и при наличии файла адресата. Приведенный далее код выдаст сообщение 1 при отсутствии файла "a.txt" и сообщение 2 при наличии файла "b.doc":

string path1 = @"C:\a.txt";

string path2 = @"C:\b.doc";

FileInfo fileinfo = new FileInfo(path1);

 try

{

 fileinfo.MoveTo(path2);

}

catch (IOException ex)

{

 textBox1.Text="Ошибка переноса файла "+ex.Message;

}

catch (Exception ex)

{

 textBox1.Text=ex.ToString();

}

Сообщения:

//Сообщение 1

Ошибка переноса файла: Unable to find the specified file.

//Сообщение 2

Ошибка переноса файла: Невозможно создать файл,

так как он уже существует.

  •  CopyTo(string pathdest), или CopyTo(string pathdest,boolean rewrite) - используются для копирования существующего файла в новый файл. Метод вызывает прерывание ввода вывода (в приведенном ниже коде) при отсутствии файла источника (сообщение 1) и при наличии файла адресата и переменной rewrite=false или при использовании функции с одним параметром (сообщение 2) и не вызывает прерывания при rewrite=true.

string path1 = @"C:\a.txt";

string path2 = @"C:\b.doc";

FileInfo fileinfo = new FileInfo(path1);

try

{

 fileinfo.CopyTo(path2,true);

}

catch(IOException ex)

{

 Console.WriteLine(“Ошибка копирования файла "+ex.Message);

}

catch (Exception ex)

{

 textBox1.Text=ex.ToString();

}

Сообщения:

//Сообщение 1

Ошибка копирования файла Could not find file "C:\a.txt".

//Сообщение 2

Ошибка  копирования файла The file "C:\b.doc" already exists.

  •  Open(FileMode mode); Open(FileMode mode,FileAccess acces); Open(FileMode mode,FileAccess acces,FileShare share); - методы открывают файл и возвращают объект типа FileStream;

string path = @"C:\a.txt";

FileInfo fileinfo = new FileInfo(path);

 FileStream filestream1,filestream;

using(filestream=fileinfo.Open(FileMode.OpenOrCreate,FileAccess.Read,FileShare.Read))

 {

 try

 {

  using(filestream1=fileinfo.Open(FileMode.OpenOrCreate,FileAccess.Read,FileShare.Read)){}

  Console.WriteLine(“Файл открыт дважды при FileShare.Share");

 }

 catch (IOException ex)

 {

     Console.WriteLine ("Файл не может быть открыт дважды при FileShare.None");

 }

 catch (Exception ex)

 {

    Console.WriteLine (e.ToString());

 }

}

В данном примере показано, что если установить FileShare.None, то файл нельзя будет открыть для совместного использования. При других значениях можно. Далее с файлом можно работать - писать, читать... аналогично как это делали в примере для метода Create.

  •  OpenRead(FileMode mode,FileAccess acces,FileShare share), OpenWrite(FileMode mode,FileAccess acces,FileShare share) - методы позволяют создавать объекта FileStream с доступом к файлу только для чтения, и с доступом к файлу как для чтения, так и для записи. Методы аналогичны методу Open и так же как и у него функция перегружаемая и может иметь один, два и три аргумента.
  •  CreateText() - метод создает новый пустой файл и объект типа S treamWriter, который может быть использован для записи в созданный текстовый файл новой информации. Файл создается заново если файл и существует. Исключение возникает если диск закрыт для записи.

string path = @"C:\a.txt";

FileInfo fileinfo = new FileInfo(path);

using (StreamWriter streamwriter = fileinfo.CreateText())

 {

 streamwriter.WriteLine("Строка 1");

 streamwriter.WriteLine("Строка 2");

 streamwriter.WriteLine("Строка 3");

}

  •  OpenText() - метод открывает текстовый файл для чтения и создает объект StreamReader с кодировкой UTF8, который можно использовать для чтения из существующего файла. Прерывание вызывается, как и во всех методах открытия файла, только при отсутствии открываемого файла или отсутствии доступа к файлу. Дополнив предыдущий фрагмент кода следующими строками мы выведем текст, который был введен в созданный файл, в контрол TextBox.

using(StreamReader streamreader = fileinfo.OpenText())

{

string sText = "";

while((sText = streamreader.ReadLine()) != null)

 {

 textBox1.Text+=sText+"\r\n";

 }

}

  •  AppendText() - метод открывает текстовый файл для добавления строк и создает объект StreamWriter с кодировкой UTF8, который используется для добавления строк. Прерывание вызывается, как и во всех методах открытия файла. Пример использования:

string path = @"C:\a.txt";

FileInfo fileinfo = new FileInfo(path);

using(StreamWriter streamwriter = fileinfo.AppendText())

 {

 streamwriter.WriteLine("Строка 4");

 streamwriter.WriteLine("Строка 5");

 streamwriter.WriteLine("Строка 6");

}

Свойства Directory, DirectoryName, Length - свойства возвращает объект, содержащий информацию о родительском каталоге, полный маршрут к файлу и размер текущего файла (типа Long).

3. Варианты заданий для самостоятельной работы

1. Ввести числа в файл. Найти максимум, минимум и посчитать количество отрицательных элементов в файле.

2. Составить программу записи в файл F1 массива 40 действительных чисел по убыванию, а в файл  F2 - по возрастанию. Массив задается в диапазоне от -10 до +10 случайным образом.

3. Файл  f1  содержит 120 чисел в 4 колонки. Создать программу считывания этих чисел и их  вывода в файл  f2  в 5 колонок.

4. Ввести в файл фамилии студентов. Затем вывести из файла те фамилии, которые начинаются на заданную букву:

5. Компонентами файла f являются действительные числа. Найти сумму компонент и разность первой и последней компонент.

6. Дан символьный файл f. Получить копию файла в файле g.

7. Компонентами файла f являются действительные числа. Найти произведение компонент наибольшее из значений компонент.

8. Компонентами файла f являются действительные числа. Найти модуль суммы и квадрат произведения компонент.

9. Даны символьные файлы f1 и f2. Переписать с сохранением порядка следования компоненты файла f1 в файл f2, а компоненты файла f2 в файл f1.

10. Компонентами файла f являются действительные числа. Найти последнюю компоненту и сумму наибольшего и наименьшего значений компонент.

11. Дан файл f, компонентами которого являются натуральные числа. Получить в файле g все компоненты файла f, делящиеся на 3 и не делящиеся на 7.

12. Компонентами файла g являются натуральные числа. Найти количество четных чисел среди компонент.

13. Дан файл f, компонентами которого являются натуральные   числа. Получить в файле g все компоненты файла f, являющиеся полными квадратами.

14. Дан файл f,  компоненты которого являются действительными числами. Найти:

    а) сумму компонент файла f;

    б) произведение компонент файла f;

    в) сумму квадратов компонент файла f;

    г) модуль суммы и квадрат произведения компонент файла f;

    д) последнюю компоненту файла f.

15. Дан файл f,  компоненты которого являются действительными числами. Найти:

    а) наибольшее из значений компонент;

    б) наименьшее из значений компонент с четными номерами;

    в) наибольшее из значений модулей с нечетными номерами;

    г) сумму наибольшего и наименьшего из значений компонент;

    д) разность первой и последней компонент файла.

16. Дан файл f, компоненты которого являются целыми числами.  Никакой из компонентов файла f не равен нулю. Числа в файле идут в следующем порядке: десять положительных, десять отрицательных, десять положительных, десять отрицательных и т.д. Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке:

а) пять положительных,  пять отрицательных,  пять положительных, пять отрицательных и т.д.;

б) двадцать положительных,  двадцать отрицательных, двадцать положительных, двадцать отрицательных и т.д. (предполагается, что число компонентов файла f делится на 40);

17. Дан файл f, компоненты которого являются целыми числами.  Число  компонентов файла делится на 100.  Записать в файл g наибольшее значение первых ста компонентов файла f, затем - следующих ста компонентов и т.д.

18. Из условия предыдущей задачи удаляется предположение о том,  что число компонентов файла f делится на 100. Если в последней группе окажется менее ста компонентов, то последний компонент файла g должен быть равен наибольшему из компонентов файла f, образующих последнюю (неполную) группу.

    

19. Даны символьные файлы f и g.  Определить, совпадают ли компоненты файла f с компонентами файла g.  Если нет, то получить номер первого компонента, в котором файлы g и f отличаются между собой.  В случае, когда один из файлов имеет n компонент (n>=0) и повторяет начало другого (более длинного) файла,  ответом должно быть число n+1;

20. Даны символьные файлы f и g. Записать в файл h все начальные совпадающие компоненты файлов f и g.

21. Дан символьный файл f. Записать в файл g с сохранением порядка следования те символы файла f:

а) которым в этом файле предшествует буква а;

б) вслед за которым в этом файле идет буква а;

22. Дан  символьный файл f.  Группы символов,  разделенные пробелами (одним или несколькими)  и  не  содержащие  пробелов внутри себя,  будем называть словами. Удалить из файла все однобуквенные  слова  и  лишние  пробелы.  Результат  записать  в файл g.

23.Дан символьный файл f. Найти самое длинное слово среди слов,  вторая  буква  которых  есть e;  если слов с наибольшей длинной несколько, то найти последнее. Если таких слов нет вообще, то сообщить об этом. Решить эту задачу:

    а) полагая, что слова состоят не более чем из 10 символов;

    б) без ограничений на число символов в слове.

24. Дан символьный файл f.  Считая, что количество символов в слове не превосходит двадцати:

    а) определить,  сколько в файле f имеется слов, состоящих из одного, двух, трех и т.д. символов;

    б) определить количество слов в файле f.

25. Дан символьный файл f.  Предполагается, что длина одного слова не превосходит десяти и что число слов  делится  на 100. Подготовить файл для печати слов в две колонки по пятьдесят строк на странице.  Слова должны быть размещены в файле f1 в следующем порядке:  1-е слово,  51-е слово,  2-е слово, 52-е слово,  ..., 50-е слово, 100-е слово, затем (следующая страница) 101-е слово,  151-е слово, ..., 150-е слово, 200-е слово и т.д..

26. Дан символьный файл f,  содержащий сведения о сотрудниках учреждения,  записанные по следующему  образцу:  фамилия имя отчество,  фамилия имя отчество, ... Записать эти сведения в файл g, используя образцы:

    а) имя  отчество  фамилия,  имя  отчество  фамилия, ...;

    б) фамилия  и.о.,   фамилия  и.о., ...

    

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

    а) без ограничения на длины слов;

    б) предполагая,  что любое слово текста состоит не  более чем из 16 букв.

28. Даны два символьных файла f1 и f2.  Файл f1  содержит произвольный текст.  Слова в тексте разделены пробелами и знаками препинания.  Файл f2 содержит не более 40  слов,  которые разделены  запятыми.  Эти  слова образуют пары:  каждое первое слово считается заменяемым,  каждое второе - заменяющим. Найти в файле f1 все заменяемые слова и заменить их на соответствующие заменяющие. Результат поместить в файл g.

29. Прямая  на  плоскости  задается уравнением a*x+b*y+c=0, где a и b одновременно  не  равны  нулю.  Будем  рассматривать только  прямые,  для которых коэффициенты a, b, c - целые числа. Пусть f - файл,  содержащий коэффициенты нескольких прямых (не менее  трех).  Переписать из файла f в файл g коэффициенты тех прямых, которые:

    а) параллельны первой из прямых, заданной в файле f;

    б) указаны в а),  но дополнительно требуется,  чтобы  все прямые были различны;

    в) пересекают первую из прямых, заданных в файле f;

    г) указаны в в),  но дополнительно требуется, чтобы среди прямых не было параллельных.

30. Условие предыдущей задачи сохраняется.  Требуется получить в файле g коэффициенты всех прямых файла f.

31. Багаж  пассажира  характеризуется количеством вещей и общим весом вещей. Дан файл f, содержащий информацию о багаже нескольких пассажиров, информация о багаже каждого отдельного пассажира представляет собой соответствующую пару чисел.

   а) Найти  число пассажиров,  имеющих более двух вещей,  и число пассажиров, количество вещей которых превосходит среднее число вещей;

    б) Определить,  имеются ли два пассажира,  багажи которых совпадают по числу вещей и различаются по весу не более чем на 0.5 кг.;

32. Багаж  пассажира  характеризуется количеством вещей и общим весом вещей.  Дан файл f, содержащий информацию о багаже нескольких пассажиров, информация о багаже каждого отдельного пассажира представляет собой соответствующую пару чисел.

    а) Выяснить,  имеется ли пассажир, багаж которого состоит из одной вещи весом не менее 30 кг.

    б) Дать сведения о багаже, число вещей в котором не  менее, чем в любом другом багаже, а вес вещей не больше, чем в любом другом багаже с этим же числом вещей.

33. Сведения  об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы),  в котором он учится. Дан файл f, содержащий сведения об учениках школы.

а)    Выяснить, имеются ли в школе однофамильцы.

б) Выяснить, имеются ли однофамильцы в каких-либо параллельных классах.

в)     Выяснить, имеются ли однофамильцы в каком-нибудь классе.

34. Сведения об ученике состоят из его имени и фамилии  и названия класса (года обучения и буквы ),  в котором он учится. Дан файл f, содержащий сведения об учениках школы.

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

б)  Выяснить,  в каких классах насчитывается более 35 учащихся.

в)  Выяснить, на сколько человек в восьмых классах больше, чем в десятых.

35. Дан файл f, содержащий те же самые сведения об учениках школы, что и в предыдущей задаче, и дополнительно отметки, полученные учениками в последней четверти.

  •  Выяснить, сколько учеников школы не имеют отметок ниже четырех.
  •  Собрать в файле g сведения о лучших учениках школы, т.е. об учениках, не имеющих отметок ниже четырех и по сумме баллов, не уступающих другим ученикам своего и параллельных классов.

36. Сведения об автомобиле состоят из его марки, номера и фамилии владельца. Дан файл f, содержащий сведения о нескольких автомобилях. Найти:

а) фамилии владельцев и номера автомобилей данной марки;

б) количество автомобилей каждой марки.

37. Дан файл f, содержащий различные даты. Каждая дата - это число, месяц и год. Найти:

а) год с наименьшим номером;

б) все весенние даты;

в) самую позднюю дату.

38. Дан файл f, который содержит номера телефонов сотрудников учреждения: указывается фамилия сотрудника, его инициалы и номер телефона.  Найти телефон сотрудника по его  фамилии  и инициалам.

39. Дан текстовый файл. Определить:

    а) число строк в тексте

    б) число слов (одно и двухбуквенные не считать);

    в) число повторений заданного слова.

40. Создать файл f, все элементы которого вычисляются по формуле:

    f[i]=i*i+4*i;   (i=1,2,..,n),

    где n -целое положительное число.

41. Создать файл f, все элементы которого вычисляются по формуле:

    f[i]=3*i*i-2*i+6; (i=1,2,..,n),

    где n -целое положительное число.

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

43. Багаж  пассажира  характеризуется количеством вещей и общим весом вещей. Дан файл f, содержащий информацию о багаже нескольких пассажиров, информация о багаже каждого отдельного пассажира представляет собой соответствующую пару чисел. Найти багаж,  средний вес одной вещи в котором отличается не более чем на 0.3 кг. от общего среднего веса вещи.

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

45. Дан файл f, который содержит номера сотрудников учреждения: указывается фамилия сотрудника, его инициалы и номер телефона. Найти по телефону сотрудника его фамилию и инициалы.

46. Сведения об автомобиле состоят из его марки, цвете, годе выпуска. Дан файл f, содержащий сведения о нескольких автомобилях. Найти:

    а) количество автомобилей каждого цвета;

    б) количество автомобилей каждой марки;

    в) количество автомобилей заданного года выпуска.

47. Написать программу, которая считывает текстовый файл, и определяет количество содержащихся в нём n символьных слов.

48. Даны два символьных файла f1 и f2 и массив случайных чисел Mas. Файл f1 содержит произвольный текст, файл f2- пустой. Слова в тексте разделены пробелами и знаками препинания. Записать в файл f2 слова из файла f1, номера которых соответствуют элементам массива Mas.

49. Дан файл с анкетными данными нескольких человек, оформлены сведения в виде записи с полями: Ф.И.О, год рождения, признак - работает, учится или безработный. Вывести информацию о безработных, моложе N лет.

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

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

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


  1.  Содержание отчета

4.1. Титульный лист.

4.2. Краткое теоретическое описание.

4.3. Задание на лабораторную работу, включающее математическую формулировку задачи.

4.4. Результаты выполнения работы, включающие схему алгоритма, тексты программ, результаты вычислений.

PAGE  181




1. Зависимость инвестиций и качества жизни населения
2. тематического факультета Суворовой Алены Александровны студентки 5 курса группы М081 математического ф
3. Понятие муниципальной службы- Муниципальная служба профессиональная деятельность граждан которая осущ
4. Жертвам фашизма
5. Академия 1996. 496 с.html
6. Реферат на тему- Технология и организация маркетинговых исследований Ст
7. а 2003 ~ 2002 гг.р. Весовая категория 45 кг.html
8. Природа в романе мухтара ауэзов
9. ЛАБОРАТОРНАЯ РАБОТА ОПРЕДЕЛЕНИЕ АКТИВНОСТИ ЩЕЛОЧНОЙ ФОСФАТАЗЫ В СЫВОРОТКЕ КРОВИ Подготовка пациент
10.  Теоретические основы проблемы воспитания бережного отношения к животным у детей 56 лет посредством экологи
11. ТЕМА1 THE UNITED STTES OF MERIC The US is one of the world's lrgest countries both in territory nd popultion
12. 071977 в-з С
13. это одновременно сама теория управления со своими понятиями а также концептуальная схема постановки пробле
14. ТЕМАТИКИ ТА ІНФОРМАТИКИ Кафедра програмування Кафедра педагогіки ПЛАНКОНСПЕКТ
15. Ноги выпрямлены
16. РЕНТГЕНОДИАГНОСТИЧЕСКИЕ ТЕХНОЛОГИИ
17. ДИСТАНЦИЯПЕШЕХОДНАЯСВЯЗКА 3 КЛАССА Оборудованы 2 параллельные равноценные нитки дистанций
18. Вариант 1 Тексты для устного ответа.
19.  Влажность ~ содержание в грунте того или иного количества воды отношение массы воды содержащейся в г
20. Актуальность Одним из перспективных объектов биоиндикации являются лишайники