Задание №6.
Описание элементов синтаксиса языка, используемых в задаче:
public – идентификатор доступа.
public Word() {} – конструктор класса.
public int numdifflett() {} – автовычисляемое поле (представленное как метод) хронящее количество различныз букв в слове.
public string ReverseWord() {} – непараметризированный метод, возвращающий словов написанное наоборот.
public void InsertLetter(string w, string st) {} – параметризированный метод, вставляющий заданную букву в заданное место в слове.
Array.Sort() – сортирует элементы в одномерных массивах Array.
Array.Reverse() – изменяет порядок элементов в одномерном массиве Array или в части массива Array на обратный.
.Insert() – метод, который позволяет вставить строку внутрь другой определенной строки
.ToCharArray() – Копирует знаки из указанной подстроки данного экземпляра в массив знаков Юникода.
В классе определить поле с максимальной длиной слова, автовычисляемое поля, хранящее число различных букв в слове, непараметризированный метод, возвращающий слово, написанное наоборот, параметризированный метод, вставляющий заданную букву в заданное место в слове.
Входные данные:
val – текст введенный пользователем, w – буква, введенная пользователем для вставки в необходимое место, st – введенная позиция для вставки буквы, тип переменных string.
Выходные данные:
maxword – максимальное слово в тексте, word – слово, написанное на оборот, maxword – слово, со вставленной буквой в нужное место, тип переменных string, numdifflett – количество различных букв в слове, тип int.
Блок-схема алгоритма:
Листинг класса «Word»:
class Word
{
char[] _addy;
public string _maxword; //Поле с максимальной длинной слова
public int _numdifflett = 0; // Автов. поле хранящее количество
различных букв в слове
string _w;
string _st;
int _t;
int _maxlen;
string _val;
public Word(string maxword, char[] addy, int maxlen, string val)
{
_maxword = maxword;
char[] _addy = addy;
addy = maxword.ToCharArray();
int j = 0;
int k = 0;
Array.Sort(addy);
while (j <= addy.Length - 2)
{
if (addy[j] != addy[j + 1])
{
k++;
}
j++;
}
_numdifflett = k + 1;
}
public string ReverseWord(string word)
{
char[] wordArray = word.ToCharArray();
Array.Reverse(wordArray);
return new string(wordArray);
}
public void InsertLetter(string w, string st)
{
string maxword = _maxword;
int t = Convert.ToInt32(st);
if (t > maxword.Length)
{
Console.WriteLine("Вы ввели некоректную позицию!");
}
maxword = maxword.Insert(t, w);
Console.WriteLine(maxword);
}
Листинг программы:
Console.WriteLine("Введите текст");
string val = Console.ReadLine();
string[] org = val.Split(' ');
int maxlen = org[0].Length;
string maxword = org[0];
for (int i = 1; i <= org.Length - 1; i++)
{
if (org[i].Length > maxlen)
{
maxword = org[i];
maxlen = org[i].Length;
}
}
Console.WriteLine("Максимальное слово в тексте : {0}", maxword);
char[] addy = maxword.ToCharArray();
Word word = new Word(maxword, addy, maxlen, val);
Console.WriteLine("Число различных букв в слове: " +
word._numdifflett);
Console.WriteLine("Максимальное слово написанное на оборот: {0}",
word.ReverseWord(word._maxword));
Console.WriteLine("Введите необходимую для встаки букву");
string w = Console.ReadLine();
Console.WriteLine("Введите позицию всавки буквы в слово");
string st = Console.ReadLine();
word.InsertLetter(w, st);
Console.ReadKey();
Контрольные примеры:
Дано: val = «Мы люди», w = «з», st = «3». Ожидаемое сообщение на выходе: maxword = «люди» , numdifflett = 4, word = «идюл» , maxword = «людзи»
Рисунок 15 – Контрольный пример №2
Дано: val = «Мы звери», w = «ж», st = «4». Ожидаемое сообщение на выходе: maxword = «звери» , numdifflett = 5, word = «иревз» , maxword = «звержи»
Рисунок 16 – Контрольный пример №2
Дано: val = «Опять двойка», w = «у», st = «9». Ожидаемое сообщение на выходе: maxword = «двойка» , numdifflett = 5, сообщение «Вы ввели некорректную позицию!»
Рисунок 17 – Контрольный пример №3