Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Упражнение 1. Работа с массивами размерных типов.






Лабораторная работа 1: Создание и использование классов и массивов

 

Упражнение 1. Работа с массивами размерных типов.

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

 

Ø Передайте в метод Main в качестве параметра имя текстового файла

  • В рабочую папку (work folder) скопируйте решение из папки install folder \Labs\Lab1\FileDetails.
  • Откройте решение FileDetails.sln.
  • В качестве параметра метода Main класса FileDetails добавьте массив строк args. В этом массиве будут содержаться все параметры командной строки, передаваемые при запуске программы. В этом задании в качестве аргумента командной строки в метод Main будет передаваться имя текстового файла.
  • В метод Main добавьте инструкцию для вывода на консоль длины массива args. Это позволит убедиться, что длина массива args равна нулю, если во время запуска программы в метод Main не передаются никакие аргументы, и обработать данную ситуацию.
  • В метод Main добавьте цикл foreach, в котором выводятся на консоль все строки массива args. Это поможет убедиться в том, что метод Main получает аргументы командной строки на этапе выполнения.

· Откомпилируйте программу FileDetails.cs и исправьте ошибки, если это необходимо. Запустите программу из командной строки, не передавая никаких аргументов командной строки. Убедитесь в том, что длина массива args равна нулю.

Подсказка: для запуска программы из командной строки, откройте окно командной строки и перейдите в папку work folder \Lab1\FileDetails\bin\Debug. Исполняемый файл находится в этой папке.

· Запустите программу из командной строки, передав в качестве аргумента командной строки имя файла work folder \Lab1\FileDetails\README.txt. Убедитесь в том, что на этапе выполнения имя файла передается в метод Main.

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

· В методе Main объявите переменную fileName типа string и присвойте ей значение args[0].

 

Ø Считайте содержимое текстового файла в массив

  • Снимите комментарии с кода, отвечающего за объявление и инициализацию объектов типа FileStream и StreamReader.
  • Определите длину текстового файла size.

Подсказка: Чтобы найти соответствующее свойство класса Stream, читайте раздел “Stream class” в.NET Framework SDK Help documents.

  • В методе Main объявите переменную символьного массива contents. Проинициализируйте ее новым экземпляром массива, длина которого равна только что определенной вами длине текстового файла.
  • В метод Main добавьте цикл for, в теле которого будет считываться один символ из reader и добавляться в contents.

Подсказка: воспользуйтесь методом Read, который не использует параметров и возвращает значение типа int. Read считывает 1 символ.Перед тем как сохранять результат в массиве приведите его к типу char.

Подсказка: Приведение к типу char: (char)reader.Read()

· В метод Main добавьте цикл foreach, в котором посимвольно будет выводиться на консоль все содержимое символьного массива. Это поможет убедиться в том, что содержимое текстового файла было успешно считано в массив contents.

Код по работе с объектами FileStream и StreamReader в методе Main должен соответствовать шаблону:

static void Main(string[ ] args)

{

//предыдущие инструкции

...

FileStream stream = new FileStream(fileName, FileMode.Open);

StreamReader reader = new StreamReader(stream);

int size = //длина читаемого файла (“Stream class” в.NET

//Framework SDK Help documents

//объявление и инициализация символьного массива contents

 

// цикл for для чтения символов из reader и записи их в contents

 

foreach(char ch in contents) {

Console.Write(ch);

}

}

· Откомпилируйте программу и исправьте ошибки, если это необходимо. Запустите программу из командной строки, передав в качестве аргумента командной строки имя файла work folder \Lab1\FileDetails\README.txt.. Убедитесь в том, что содержимое файла корректно отображается на консоли.

· Закройте объект Reader, вызвав подходящий метод для StreamReader.

Ø Систематизируйте и резюмируйте информацию о содержимом файла

  • В классе FileDetails объявите новый статический метод Summarize. Этот метод не будет возвращать значений и будет принимать в качестве параметра массив символов. В метод Main добавьте инструкцию вызова метода Summarize, передав contents в качестве аргумента.
  • В метод Summarize добавьте цикл foreach, в котором будет просматриваться каждый символ массива, передаваемого в качестве аргумента. Подсчитайте количество гласных, согласных и символов перевода строки, сохраняя результаты в отдельных переменных.

Подсказка:

Чтобы определить, является ли данный символ буквой, воспользуйтесь методом IsLetter() класса Char, который возвращает значение false, если в строке встречается управляющая последовательность (например, перевод каретки).

Чтобы определить, является ли символ гласной, создайте строку из всех возможных гласных и воспользуйтесь для нее методом IndexOf, который позволит определить, существует ли в данной строке указанный символ:

if (" AEIOUaeiou".IndexOf(myCharacter)! = -1) {

// myCharacter is a vowel

} else {

// myCharacter is not a vowel

}

· Напишите четыре инструкции для вывода на консоль следующей информации:

o Общее количество символов в файле.

o Общее количество гласных в файле (vowels).

o Общее количество согласных в файле (consonants).

o Общее количество строк в файле (lines). Подсказка: необходимо искать символ перевода каретки.

Доработайте метод Summarize:

static void Summarize(char[ ] contents)

{

int vowels = 0, consonants = 0, lines = 0;

foreach (char current in contents) {

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

}

 

//4 инструкции для вывода на консоль общего кол-ва символов в //файле, гласных в файле, согласных в файле, строк в файле.

}

· Откомпилируйте программу и исправьте ошибки, если это необходимо. Запустите программу из командной строки для разбора файла work folder \Lab1\FileDetails\README.txt.

Результат работы программы:

o 1066 символов

o 235 гласных

o 342 согласных

o 26 строк

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.