Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа № 13
Цель работы изучить принципы работы с файлами средствами языка C sharp.
2 Общие сведения
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 обеспечивают возможность чтения и записи строк и символов в строках.
Класс File содержит набор статических методов, которые могут быть использованы для создания, открытия, копирования, удаления и перемещения файлов. Некоторые из методов класса File (например Create()) создают объекты типа FileStream или StreamWriter. При рассмотрении методов класса пока не будем заострять внимание на возможных прерываниях при использовании методов класса (об этом более подробно при рассмотрении методов класса FileInfo - прерывания у методов обоих классов идентичны). Рассмотрим основные методы класса:
//Символ @ блокирует использование косой черты
//как маркера начала спецсимвола
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);
}
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="Файл открыт дважды.";
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");
}
}
using(StreamReader streamreader = File.OpenText(path))
{
string sString = "";
while((sString = streamreader.ReadLine()) != null)
{
richTextBox1.AppendText(sString+"\r\n");
}
}
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");
}
Примеры использования методов 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");
}
Следующий код показывает основные возможности по работе с атрибутами:
//Создание пустой файла
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);
}
Класс Path содержит набор статических методов, используемых для обработки имен файлов. Рассмотрим основные методы и свойства класса:
Таблица 1 - Методы класса Path
GetFileName(string path) |
Возвращает имя файла вместе с расширением, но без пути. |
GetFileNameWithoutExtension(string path) |
Возвращает имя файла без расширения и без пути. |
GetExtension(string path) |
Возвращает расширение имени файла. |
GetFullPath(string path) |
Возвращает полное имя файла. |
GetPathRoot(string path) |
Возвращает корневой каталог для заданного файла. |
GetDirectoryName(string patch) |
Возвращает имя каталога для указанного файла. |
GetTempFileName() |
Возвращает уникальное имя временного файла и создает файл нулевой длины с данным именем. |
Класс FileInfo наследник абстрактного класса FileSystemInfo используется для создания, копирования, удаления, перемещения, и открытия файлов, и при использовании ряда методов создает объекты типа FileStream.
Класcы FileSystemInfo содержит свойства и методы, общие для управления файлами и директориями (табл.2 ).
Таблица 2 - Методы класса FileSystemInfo
Attributes |
Свойство, которое может быть использовано для установки или получения атрибутов файла. |
Exists |
Свойство используется для проверки существования файла. |
Delete() |
Метод позволяет удалить файл. |
CreationTime, LastAccessTime, LastWriteTime |
Свойства типа DateTime. Используются для получения или изменения даты создания файла, даты последнего доступа или последней записи в файл соответственно. |
Примеры использования:
string path = @"C:\b.txt";
FileInfo fileinfo = new FileInfo(path);
if(!fileinfo.Exists) Text="Файл не существует";
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 добавляет дополнительные методы для работы с файлами:
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();
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
Ошибка переноса файла: Невозможно создать файл,
так как он уже существует.
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.
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.
string path = @"C:\a.txt";
FileInfo fileinfo = new FileInfo(path);
using (StreamWriter streamwriter = fileinfo.CreateText())
{
streamwriter.WriteLine("Строка 1");
streamwriter.WriteLine("Строка 2");
streamwriter.WriteLine("Строка 3");
}
using(StreamReader streamreader = fileinfo.OpenText())
{
string sText = "";
while((sText = streamreader.ReadLine()) != null)
{
textBox1.Text+=sText+"\r\n";
}
}
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, содержащий те же самые сведения об учениках школы, что и в предыдущей задаче, и дополнительно отметки, полученные учениками в последней четверти.
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. Написать программу, которая считывает из заданного файла слова и записывает в новый файл только те из них, длина которых четная.
4.1. Титульный лист.
4.2. Краткое теоретическое описание.
4.3. Задание на лабораторную работу, включающее математическую формулировку задачи.
4.4. Результаты выполнения работы, включающие схему алгоритма, тексты программ, результаты вычислений.
PAGE 181