using System;
using System.Collections.Generic;
using System.Text;
namespace _4_task
{
class Program
{
static string testString =
"События являются членами класса, которые позволяют уведомлять другие ком-\r\n" +
"поненты приложения о том, что случилось с этим классом. Когда в приложении \r\n" +
"происходит что-то важное, оно генерирует событие, уведомляющее о случившемся\r\n" +
"все заинтересованные компоненты. Вместе с событием зачастую передаются раз-\r\n" +
"личные аргументы, содержащие дополнительные сведения о нем. Другие части при-\r\n" +
"ложения обрабатывают это событие, то есть исполняют связанный с ним метод.\r\n" +
"Сигнатура метода, обрабатывающего событие, должна совпадать с сигнатурой это-\r\n" +
"го события. Иными словами, метод должен принимать аргументы, которые переда-\r\n" +
"ются с событием. Одно событие может обрабатываться несколькими методами, а\r\n" +
"один метод может обрабатывать несколько событий.\r\n" +
"Делегаты — это особые классы, обеспечивающие работу событий. В сущности, де-\r\n" +
"легат — это указатель на функцию, обеспечивающий контроль типов. Он позволяет\r\n" +
"передавать ссылку на точку входа метода и исполнять этот метод без традиционно-\r\n" +
"го явного вызова. При объявлении делегата указывают сигнатуру вызываемого им\r\n" +
"метода и тип возвращаемого результата.";
static void Main(string[] args)
{
// @@@
int[] A = new int[20];
int len = A.Length;
string S = "проба";
len = S.Length;
// @@@
Console.WriteLine(testString);
Console.WriteLine("--------------");
// 2.
int lines = countLines(testString);
Console.WriteLine("lines = {0}", lines);
// 3.
int words = countWords(testString);
Console.WriteLine("words = {0}", words);
// 4.
double wordsMidLen = countWordsMidLength(testString);
Console.WriteLine("words mid length = {0:0.##}", wordsMidLen);
// 5.
int[] wordsCount_byLength = new int[30];
Count_byLength(testString, wordsCount_byLength);
Console.WriteLine("Press any key");
Console.ReadKey();
}
//----------------------------
static int countLines(string S) // щиталка линий
{
// counter = 0 ; не используется
string delim="\n"; // разделитель - ПЕРЕНОС НА НОВУЮ СТРОКУ
String[] words = S.Split(delim.ToCharArray()); // Масив со словами, которые били разбиты с "S"
return words.Length; // возвращаем длину масива = количество строк
}
//--
static int countWords(string S) // щиталка слов
{
int counter = 0;
string delim = " ,.-;:"; // разделители
String[] words = S.Split(delim.ToCharArray()); // разбиваем текст на слова
for (int i = 0; i < words.Length; i++) // цикл по всем словам
{
if (words[i] != "") counter++; // если в елемент в масиве не пустой, тогда это слово
}
return counter; // возвращаем количество слов
}
//--
static double countWordsMidLength(string S) // пошук середньої довжини слова.
{
double len = 0; // длина
int counter = 0; // щетчик слов
int letter_counter = 0; // щетчик букв
string delim = " ,.-;:"; // разделитель
String[] words = S.Split(delim.ToCharArray()); // по аналогии с предыдущим
for (int i = 0; i < words.Length; i++) /// прогонка цикла по всем словам
{
if (words[i] != "") // если это слово, а не пустота
{
counter++; // кол слов ++
letter_counter += words[i].Length; // количество букв = количество букв + длина елемента масива с индексом "i"
}
}
len = (double)letter_counter / (double)counter; // среднее значение = количество букв / количество слов
return len; // возврат ср значения
}
//--
static void Count_byLength(string S, int[] counter)
{
string delim = " ,.-;:"; // разделители
String[] words = S.Split(delim.ToCharArray()); // разбиваем слова в масив
for (int i = 0; i < words.Length; i++) // прогонка по елементам масива
{
if (words[i].Length != 0)
{ // если не елемент масива words с индексом i не пустой
counter[words[i].Length - 1]++; // записуем в масив КАУНТЕР в индекс [words[i].Length - 1] +=1
}
}
for (int i = 0; i < counter.Length; i++)// теперь с помощью цыкла выводим эту "характеристику"
{
if (counter[i] != 0) // если количество слов с количеством букв i !=0
{
Console.WriteLine("LETTERS = {0} COUNT = {1}",i,counter[i]); // выводим то что написано
}
}
}
}
}
/*
* 1. Використовуючи зразок, маркований @@@, розібратись, в чому різниця властивості Length для масива та рядка
*
* Використовуючи як зразок демонстраційний проект лекції № 7, реалізувати для рядка testString:
* 2. знаходження "кількості рядків".
* 3. розрахунок кількості слів.
* 4. пошук середньої довжини слова.
*
* 5. Додаткове завдання: Знайти розподіл кількості слів за довжиною слова
*/
Зараз переглядають цей форум: Немає зареєстрованих користувачів і 11 гостей