Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

Информатика, программирование->Реферат
Задание режимов работы и обмен данными с дисплеем можно выполнять при прерываниях BIOS типа 10Н, а вывод данных на дисплей — и при прерываниях DOS тип...полностью>>
Информатика, программирование->Книга
Вычислительная техника в настоящее время широко применяется во всех областях человеческой деятельности. Существует устойчивая тенденция расширения кру...полностью>>
Информатика, программирование->Книга
Современный специалист в области создания программного обеспечения для вычислительной техники и автоматизированных систем должен обладать достаточными...полностью>>
Информатика, программирование->Лабораторная работа
map]: в) libraries[nul.lib]: Листинг программы: d_seg segment st1 db 'Starokozhko Anton Aleksandrovich', 10 , 13, '$' d_seg ends c_seg segment assume ...полностью>>

Главная > Лекция >Информатика, программирование

Сохрани ссылку в одной из сетей:

Робота з літерними величинами

Коли говорять про cтрічковий тип, то звичайно розрізняють тип, що представляє:

окремі символи - тип char;

рядок постійної довжини - масив символів;

рядок змінної довжини - тип string.

Символьний тип char, що представляє окремий випадок рядків довжиною 1. Основні операції над рядками - це розбір і зборка.

Найбільш часто використовуваним стрічковим типом є тип, названий string, що задає рядок змінної довжини. Над цим типом допускаються операції пошуку входження одного рядка в інший, операції вставки, заміни й видалення підрядків.

Клас char

В C# є символьний клас Char, заснований на класі System.Char і що використовує двохбайтове кодування Unicode подання символів. Константу можна задавати:

  • символом, укладеним в одинарні ( ‘A’ ) лапки;

  • escape-послідовністю, що задає код символу;

Escape-послідовність («виключена послідовність») - відповідні послідовності текстових символів, які представляють собою логічне кодування. Необхідність логічного кодування текстових знаків виникла тому, що деякі з текстових знаків у програмах, що працюють із текстом, мають спеціальне (керуюче) значення. Для того, щоб використати ці знаки безпосередньо як текст, їх кодують специфічними для кожної системи (escape-послідовностями,: наприклад у З послідовності - \n (символ перекладу рядка), \t( символ табулювання) і т.д. використаються при форматному виводі.

  • Unicode-послідовністю, що задає Unicode-код символу.

Приклади оголошення символьних змінних і роботи з ними:

char cH2 = 'A'; //Символ

char cH3 = '\x5A';//Шістнацят. код

char ch3 = '\u0058';//Unicode-код

char VK = '\n'; //ESCape - послідовність переклад рядка

char TAB = '\t';// табуляція

char ch = new Char();

int code;

string s;

ch = cH2;

//перетворення символьного типу в тип int

code = ch;

cH2 = (char)(code + 1);

//перетворення символьного типу в рядок

s = cH2.ToString()+ cH3.ToString() + ch3.ToString() + VK + TAB;

Console.WriteLine("s= {0},\t ch= {1}, \t code= {2}", s, ch, code);

for (int i = 1; i < 64; i++)

{

cH2 = (char)(code + i);

Console.WriteLine(TAB + cH2.ToString());

}

Три символьні змінні ініціалізовані константи, значення яких задані трьома різними способами. Змінна ch оголошується як об'єкт, використовуючи new і виклик конструктора класу. Тип char, як і всі типи C#, є класом. Цей клас успадковує властивості й методи класу Object і має велику кількість власних методів.

Явні або неявні перетворення між класами char й string відсутні, але, завдяки методу ToString, змінні типу char перетворюються в тип string.

У результаті роботи процедури рядок s, отриманий зчепленням трьох символів, перетворених у рядки, має значення BZX, змінна ch дорівнює A, а її код - змінна code - 65.

Таблиця 17.1. Статичні методи й властивості класу Char

Метод

Опис

GetNumericValue

Повертає чисельне значення символу, якщо він є цифрою, і (-1) у противному випадку

GetUnicodeCategory

Всі символи розділені на категорії. Метод повертає Unicode категорію символу. Нижче наведений приклад

IsControl

Повертає true, якщо символ є керуючим

IsDigit

Повертає true, якщо символ є десятковою цифрою

IsLetter

Повертає true, якщо символ є буквою

IsLetterOrDigit

Повертає true, якщо символ є буквою або цифрою

IsLower

Повертає true, якщо символ заданий у нижньому регістрі

IsNumber

Повертає true, якщо символ є числом (десятковою або шістнадцятирічною цифрою)

IsPunctuation

Повертає true, якщо символ є розділовим знаком

IsSeparator

Повертає true, якщо символ є роздільником

IsSurrogate

Деякі символи Unicode з кодом в інтервалі [0x1000, 0x10FFF] представляються двома 16-бітними "сурогатними" символами. Метод повертає true, якщо символ є сурогатним

IsUpper

Повертає true, якщо символ заданий у верхньому регістрі

IsWhiteSpace

Повертає true, якщо символ є "білим пробілом". До білих пробілів, крім пробілу, ставляться й інші символи, наприклад, символ кінця рядка й символ перекладу каретки

Parse

Перетворить рядок у символ. Природно, рядок повинен складатися з одного символу, інакше виникне помилка

ToLower

Приводить символ до нижнього регістру

ToUpper

Приводить символ до верхнього регістру

MaxValue, MinValue

Властивості, що повертають символи з максимальним і мінімальним кодом. Символи, що повертають, не мають видимого образу

Більшість статичних методів перевантажені. Вони можуть застосовуватися як до окремого символу, так і до рядка, для якого вказується номер символу для застосування методу. Основну групу становлять методи Is…,використовувані при розборі рядків.

Крім статичних методів, у класі Char є й динамічні. Більшість із них - це методи батьківського класу Object, успадковані в класі Char. Із власних динамічних методів варто відзначити метод CompareTo, що дозволяє проводити порівняння символів. Він відрізняється від методу Equal тим, що для незбіжних символів видає "відстань" між символами відповідно до їх упорядкованості в кодуванні Unicode.

Приклад:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace String2

{

class Program

{

static void Main(string[] args)

{

char cH2, cH3;

int dif;

Console.WriteLine("Метод CompareTo");

cH2='A'; cH3= 'Z';

dif = cH2.CompareTo(cH3);

Console.WriteLine("Відстань між символами {0},{1} = {2}", cH2, cH3, dif);

cH2='а'; cH3= 'А';

dif = cH2.CompareTo(cH3);

Console.WriteLine("Відстань між символами {0},{1} = {2}", cH2, cH3, dif);

cH2='Я'; cH3= 'А';

dif = cH2.CompareTo(cH3);

Console.WriteLine("Відстань між символами {0},{1} = {2}", cH2, cH3, dif);

cH2='A'; cH3= 'A';

dif = cH2.CompareTo(cH3);

Console.WriteLine("Відстань між символами {0},{1} = {2}", cH2, cH3, dif);

cH2='А'; cH3= 'A';

dif = cH2.CompareTo(cH3);

Console.WriteLine("Відстань між символами {0},{1} = {2}", cH2, cH3, dif);

cH2='Ё'; cH3= 'А';

dif = cH2.CompareTo(cH3);

Console.WriteLine("Відстань між символами {0},{1} = {2}", cH2, cH3, dif);

}

}

}

Результати порівняння зображені на рис 17.1

Рис. 17.1.  Порівняння символів

Аналізуючи ці результати, можна зрозуміти, що в кодуванні Unicode як латиниця, так і кирилиця щільно впаковані. Виключення становить буква Е - заголовна й мала - вони випадають із щільного кодування. Малі букви в кодуванні безпосередньо випливають за заголовними буквами. Відстань між алфавітами в кодуванні досить велике - російська буква А на 975 символів правіше в кодуванні, чим відповідна буква в латинському алфавіті.

Клас char[] - масив символів

У мові C# визначений клас Char[], і його можна використати для подання рядків постійної довжини. Крім того, оскільки масиви в C# динамічні, то можна використати масиви символів для подання рядків.

Масив char[] - це звичайний масив, його не можна ініцілізувати рядком символів. Константа, що задає рядок символів, належить класу String, а в C# не визначені взаємні перетворення між класами String й Char[]. У класу String є, динамічний метод ToCharArray, що задає перетворення рядка символів у масив.

Клас Char[] є спадкоємцем не тільки класу Object, але й класу Array, і, отже, має всі методи батьківських класів. Деякі перевантажені методи класу Array можна розглядати як операції над рядками. Методи IndexOf, LastIndexOf дозволяють визначити індекси першого й останнього входження в рядок деякого символу. На жаль, їх не можна використати для знаходження індексу входження підрядки в рядок.

Клас String

Основним типом при роботі з рядками є тип string, що задає рядку змінної довжини. Клас String у мові C# відноситься до посилальних типів. Над рядками - об'єктами цього класу - визначений широкий набір операцій.

Об'єкти класу String оголошуються з явною або відкладеною ініціалізацією, з явним або неявним викликом конструктора класу. Найчастіше, при оголошенні строкової змінної конструктор явно не викликається, а ініціалізація задається стрічковою константою. У класу String багато конструкторів. Вони дозволяють сконструювати рядок з:

  • символу, повтореного задане число раз;

  • масиву символів char[];

  • частини масиву символів.

Приклади оголошення рядків:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace String3

{

class Program

{

static void Main(string[] args)

{

//конструктори

string world = "Мир";

//string s1 = new string("s1"); - не припустимо

//string s2 = new string(); - не припустимо

string sssss = new string('s', 5);

char[] yes = "Yes".ToCharArray();

string stryes = new string(yes);

string strye = new string(yes, 0, 2);

Console.WriteLine("world = {0}; sssss={1}; stryes={2};" +

" strye= {3}", world, sssss, stryes, strye);

string stry = new string(yes, 1, 2);

Console.WriteLine("world = {0}; sssss={1}; stryes={2};" +

" strye= {3}", world, sssss, stryes, stry); }

}

}

Об'єкт world створений без явного виклику конструктора, а об'єкти sssss, stryes, strye створені різними конструкторами класу String.

Зверніть увагу, не допускається явний виклик конструктора за замовчуванням - конструктора без параметрів. Немає також конструктора, якому як аргумент можна передати звичайну строкову константу. Відповідні оператори в тексті закоментовані.

Над рядками визначені наступні операції:

  • присвоювання (=);

  • дві операції перевірки еквівалентності (==) і (!=);

  • конкатенація або зчеплення рядків (+);

  • узяття індексу ([]).

Бінарна операція "+" зчіплює два рядки, приписуючи другий рядок до хвоста першої.

Можливість узяття індексу при роботі з рядками відбиває той факт, що рядок можна розглядати як масив й одержувати без праці кожен її символ. Кожен символ рядка має тип char, доступний тільки для читання, але не для запису.

Приклад, у якому над рядками виконуються дані операції:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace String3

{

class Program

{

static void Main(string[] args)

{

//операції над рядками

string s1 = "ABC", s2 = "CDE";

string s3 = s1 + s2;

bool b1 = (s1 == s2);

char cH2 = s1[0], cH3 = s2[0];

Console.WriteLine("s1={0}, s2={1}, b1={2}," +

"cH2={3}, cH3={4}", s1, s2, b1, cH2, cH3);

s2 = s1;

b1 = (s1 != s2);

cH3 = s2[0];

Console.WriteLine("s1={0}, s2={1}, b1={2}," +

"cH2={3}, cH3={4}", s1, s2, b1, cH2, cH3);

}

}

}

В C# існують два види стрічкових констант:

  • звичайні константи, які представляють рядок символів, укладені в лапки;

  • @-константи, задані звичайною константою c попереднім знаком @.

У звичайних константах деякі символи можуть задаватися у вигляді escape-послідовностей. Для всіх цих цілей використовується комбінація символів, що починається символом "\" - зворотна коса риска. Так, пари символів: "\n", "\t", "\\", "\"" задають відповідно символ переходу на новий рядок, символ табуляції, сам символ зворотної косої риски, символ лапок, що вставляє в рядок, але не сигналізує про її закінчення. Комбінація "\xNNNN" задає символ, обумовлений шістьнадцятерічним кодом NNNN. Іноді виникають незручності: наприклад, при завданні констант, що визначають шлях до файлу, доводиться щораз подвоювати символ зворотної косої риски. Це одна із причин, по якій з'явилися @-константи.

В @-константах всі символи трактуються в повній відповідності з їхнім зображенням. Тому шлях до файлу краще задавати @-константою.

Таблиця 17.2 Статичні методи й властивості класу String

Метод

Опис

Empty

Повертається порожній рядок. Властивість зі статусом read only

Compare

Порівняння двох рядків. Метод перевантажений. Реалізації методу дозволяють порівнювати як рядки, так і підрядки. При цьому можна враховувати або не враховувати регістр, особливості національного форматування дат, чисел і т.д.

CompareOrdinal

Порівняння двох рядків. Метод перевантажений. Реалізації методу дозволяють порівнювати як рядки, так і підрядки. Рівняються коди символів

Concat

Конкатенація(зчеплення) рядків. Метод перевантажений, допускає зчеплення довільного числа рядків

Copy

Створюється копія рядка

Format

Виконує форматування відповідно до заданих специфікацій формату.

Join

Конкатенація масиву рядків у єдиний рядок. При конкатенації між елементами масиву уставляються роздільники. Операція, задана методом Join, є зворотною до операції, заданої методом Split. Останній є динамічним методом й, використовуючи роздільники, здійснює поділ рядка на елементи

Динамічні методи класу String

Методи класу String дозволяють виконувати вставку, видалення, заміну, пошук входження підрядки в рядок. Клас String успадковує методи класу Object, частково їх перевизначаючи.

Методи, наведені в таблиці, дають досить повну картину можливостей, наявних при роботі з рядками в C#. Варто пам'ятати, що клас String є незмінним. Тому Replace, Insert й інші методи являють собою функції, що повертають новий рядок як результат і не змінюють рядок, що викликав метод.

Таблиця 17.3. Динамічні методи й властивості класу String

Метод

Опис

Insert

Вставляє підрядок в задану позицію

Remove

Видаляє підрядок в заданій позиції

Replace

Заміняє підрядок в заданій позиції на новий підрядок

Substring

Виділяє підрядок в заданій позиції

IndexOf, IndexOfAny, LastIndexOf, LastIndexOfAny

Визначаються індекси першого й останнього входження заданого підрядка або будь-якого символу із заданого набору

StartsWith, EndsWith

Повертається true або false, залежно від того, починається або закінчується рядок заданим підрядком

PadLeft, PadRight

Виконує набивання потрібним числом пробілів на початку й наприкінці рядка

Trim, TrimStart, TrimEnd

Зворотні операції до методів Pad. Віддаляються пробіли на початку й наприкінці рядка, або тільки з одного її кінця

ToCharArray

Перетворення рядка в масив символів

Клас StringBuilder

Клас StringBuilder – побудуви рядків. Клас string не дозволяє змінювати існуючі об'єкти. Стрічковий клас StringBuilder дозволяє компенсувати цей недолік. Цей клас належить до змінюваних класів і його можна знайти в просторі імен System.Text.

Оголошення рядків. Конструктори класу StringBuilder

Об'єкти цього класу оголошуються з явним викликом конструктора класу. Оскільки спеціальних констант цього типу не існує, то виклик конструктора для ініціалізації об'єкта просто необхідний. Конструктор класу перевантажений, і поряд з конструктором без параметрів, що створюють порожній рядок, є набір конструкторів, яким можна передати дві групи параметрів. Перша група дозволяє задати рядок або підрядок, значенням якої буде ініцілізувати створюваний об'єкт класу StringBuilder. Друга група параметрів дозволяє задати ємність об'єкта - обсяг пам'яті, що відводить даному екземпляру класу StringBuilder. Кожна із цих груп не є обов'язковою й може бути опущена. Прикладом може служити конструктор без параметрів, що створює об'єкт, ініцілізувати порожнім рядком, і з деякою ємністю, заданої за замовчуванням, значення якої залежить від реалізації. Приклад синтаксису трьох конструкторів:

  • public StringBuilder (string str, int cap). Параметр str задає рядок ініціалізації, cap - ємність об'єкта;

  • public StringBuilder (int curcap, int maxcap). Параметри curcap й maxcap задають початкову й максимальну ємність об'єкта;

  • public StringBuilder (string str, int start, int len, int cap). Параметри str, start, len задають рядок ініціалізації, cap - ємність об'єкта.

Зверніть увагу, що для цього класу не можна використати просте присвоювання:

StringBuilder s="abc"; //Неправильно!

У цьому випадку необхідно записати так:

StringBuilder s=new StringBuilder("abc"); //Правильно

Операції над рядками

Над рядками цього класу визначені практично ті ж операції з тією же семантикою, що й над рядками класу String, однак, операція конкатенації (+) не визначена над рядками класу StringBuilder, її роль грає метод Append, що дописує новий рядок у хвіст уже існуючої.

З рядком цього класу можна працювати як з масивом, але, на відміну від класу String, тут уже допускається не тільки читання окремого символу, але і його зміна.

Приклад:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace String3

{

class Program

{

static void Main(string[] args)

{

//Рядка класу StringBuilder

//операції над рядками

StringBuilder s1 = new StringBuilder("ABC"),

s2 = new StringBuilder("CDE");

StringBuilder s3 = new StringBuilder();

//s3= s1+s2;

s3 = s1.Append(s2);

bool b1 = (s1 == s3);

char cH2 = s1[0], cH3 = s2[0];

Console.WriteLine("s1={0}, s2={1}, b1={2}," +

"cH2={3}, cH3={4}", s1, s2, b1, cH2, cH3);

s2 = s1;

b1 = (s1 != s2);

cH3 = s2[0];

Console.WriteLine("s1={0}, s2={1}, b1={2}," +

"cH2={3}, cH3={4}", s1, s2, b1, cH2, cH3);

StringBuilder s = new StringBuilder("Zenon");

s[0] = 'L';

Console.WriteLine(s);

}

}

}

Цей приклад демонструє можливість виконання над рядками класу StringBuilder тих же операцій, що й над рядками класу String. У результаті присвоювання створюється додаткове посилання на об'єкт, операції перевірки на еквівалентність працюють зі значеннями рядків, а не з посиланнями на них. Конкатенацію можна замінити викликом методу Append. З'являється нова можливість - змінювати окремі символи рядка. Для того щоб ім'я класу StringBuilder стало доступним, у проект додана пропозиція using System.Text, що посилається на відповідний простір імен. Результати роботи представлені на рис.17.2.

Рис.17. 2. Результати роботи програми

Основні методи й властивості

У класу є основні методи, що дозволяють виконувати такі операції над рядком як вставка, видалення й заміна підрядків, але немає методів, подібних до пошуку входження, які можна виконувати над звичайними рядками. Технологія роботи звичайно така: конструюється рядок класу StringBuilder; виконуються операції, що вимагають зміну значення; отриманий рядок перетвориться в рядок класу String; над цим рядком виконуються операції, що не вимагають зміни значення рядка. У класу StringBuilder немає статичних методів. Всі його методи - динамічні.

Основні методи класу StringBuilder:

public StringBuilder Append (<об'єкт>). До рядка, що викликала метод, приєднується рядок, отриманий з об'єкта, що переданий методу як параметр. Метод перевантажений і може приймати на вході об'єкти всіх простих типів, починаючи від char й bool до string й long. Оскільки об'єкти всіх цих типів мають метод ToString, завжди є можливість перетворити об'єкт у рядок, що і приєднується до вихідного рядка. Як результат повертається посилання на об'єкт, що викликав метод. Оскільки повертає ссилку, що, нічому привласнювати не потрібно, те вірніше вважати, що метод змінює значення рядка;

public StringBuilder Insert (int location,<об'єкт>). Метод вставляє рядок, отриманий з об'єкта, у позицію, зазначену параметром location. Метод Append є окремим випадком методу Insert;

public StringBuilder Remove (int start, int len). Метод видаляє підрядок довжини len, що починається з позиції start;

public StringBuilder Replace (string str1,string str2). Всі входження підрядка str1 заміняються на рядок str2;

public StringBuilder AppendFormat (<рядок форматів>, <об'єкти>). Метод є комбінацією методу Format класу String і методу Append. Рядок форматів, переданий методу, містить тільки специфікації форматів. Відповідно до цих специфікацій перебувають і форматуються об'єкти. Отримані в результаті форматування рядки приєднуються в кінець вихідного рядка.

Приклади використання основних властивостей і методів класу StringBuilder:

Властивість Length. Повертає довжину рядка:

int k=s.Length;

Метод Append. Додає рядок до існуючій:

StringBuilder s1=new StringBuilder("Cogito ");

StringBuilder s2=new StringBuilder("ergo ");

s1.Append(s2);

s1.Append("sum");

System.Console.WriteLine(s1); //Надрукується "Cogito ergo sum"

//Я мислю, значить я існую

Метод Equals. Служить для порівняння двох рядків. Повертає true або false. Приклад використання:

if(s1.Equals(s2)) System.Console.WriteLine("Рядки рівні");

else

System.Console.WriteLine("Рядки не рівні");

Метод Insert. Вставляє символи в задану позицію (нумерація йде з нуля):

StringBuilder s1=new StringBuilder("abcde");

s1.Insert(2, "xyz");

System.Console.WriteLine(s1); //Надрукується "abxyzcde"

Метод Remove. Видаляє символи з рядка:

StringBuilder s1=new StringBuilder("abcde");

s1.Remove(1, 2);

System.Console.WriteLine(s1); //Надрукується "ade"

Певый параметр в Remove - це з якої позиції видаляємо (нумерація з нуля), другий - скільки символів видаляємо.

Метод Replace. Заміняє символи:

StringBuilder s=new StringBuilder("abcdeabcde");

s.Replace("abc", "ZZZ");

System.Console.WriteLine(s); //Надрукується "ZZZdeZZZde"

За винятком методу Remove, всі розглянуті методи є перевантаженими

Ємність буфера

Кожен екземпляр рядка класу StringBuilder має буфер, у якому зберігається рядок. Обсяг буфера - його ємність - може мінятися в процесі роботи з рядком. Об'єкти класу мають дві характеристики ємності - поточну й максимальну. У процесі роботи поточна ємність змінюється в межах максимальної ємності. Якщо розмір рядка збільшується, то відповідно автоматично росте й поточна ємність. Якщо ж розмір рядка зменшується, то ємність буфера залишається на тім же рівні. Із цієї причини іноді правильно зменшувати ємність. Варто пам'ятати, що спроба зменшити ємність до величини, меншої довжини рядка, приведе до помилки.

У класу StringBuilder є 2 властивості й один метод, що дозволяють аналізувати й управляти ємнісними властивостями буфера. Цими характеристиками можна управляти також ще на етапі створення об'єкта, - для цього є відповідний конструктор. Розглянемо властивості й метод класу, пов'язані з ємністю буфера:

  • властивість Capacity - повертає або встановлює поточну ємність буфера;

  • властивість MaxCapacity - повертає максимальну ємність буфера (максимальна кількість символів, які можна записати в об'єкт типу StringBuilder).

System.Console.WriteLine(s.MaxCapacity);

Метод int EnsureCapacity (int capacity) - дозволяє зменшити ємність буфера. Метод намагається спочатку встановити ємність, задану параметром capacity; якщо це значення менше розміру збереженого рядка, то ємність установлюється такий, щоб гарантувати розміщення рядка. Це число й повертається як результат роботи методу.

Варіанти індивідуальних завдань.

Завдання 17.1.

Ввести ваше прізвище, ім'я та по батькові як рядок символів. Визначити довжину рядка й кількість букв співпадаючих із другою буквою прізвища. Використовуючи методи класу StringBuilder вставити між кожною буквою прізвища й імені знак " - ". У по батькові замінити голосні малі літери на прописні. Вивести отриманий результат, додавши до нього коментарі - студент якої спеціальності й групи це виконав. Виконати завдання у відповідності зі своїм варіантом.

  1. Вивести ім'я й кількість букв у третім слові.

  2. Визначити кількість букв «а» у прізвищі.

  3. Вивести перші букви прізвища, імені та по батькові із крапками.

  4. Вивести довжину прізвища й імені.

  5. Вивести прізвище й ініціали.

  6. Вивести ім'я й кількість букв у прізвищі.

  7. Визначити кількість букв «а» в імені.

  8. Вивести саме довге слово.

  9. Видалити всі букви «а» й «про» із прізвища.

  10. Вивести ім'я в стовпець.

  11. Перевірити чи починається хоча б одне зі слів з букви «В»

  12. Всі букви «й» імені продублювати.

  13. Вивести прізвище й кількість букв імені.

  14. Вивести ім'я у зворотному порядку.

  15. Вивести прізвище в стовпець.

  16. Вивести ім'я, по батькові й кількості букв імені.

  17. Вивести слово, що має найменшу кількість букв.

  18. Вивести прізвище, ім'я, по батькові без пробілів. Скільки букв має ім'я.

  19. Вивести довжини трьох слів.

  20. Вивести ім'я й кількість букв прізвища.

  21. Вивести ім'я, прізвище й сумарну довжину слів.

  22. Кожну букву імені продублювати.

  23. Вивести прізвище у зворотному порядку.

  24. Визначити кількість букв «а» й «про» в імені.

  25. Вивести третє слово й кількість букв у прізвищі.

Завдання 17.2.

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

Приклад програми: Дано рядок, роздільниками між словами є пробіли. Виділити слова і занести їх в одновимірний масив.

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

string[] h = new string[20];

String s, b;

String s1 = " ";

s = Console.ReadLine()+" ";

int r = s.Length;

Console.WriteLine(r);

int l = 0;

String d = "";

for (int i = 0; i <= r-1; i++)

{

if ((s[i] != s1[0])) d = d + s[i];

if ((s[i] == s1[0]) && (d != null)) {

l = l + 1; h[l] = d; d = null;

}

Console.WriteLine(" "+ s[i]);

}

Console.ReadLine();

}

}

}

Приклад 17.1: Дано рядок, роздільниками між словами є пробіли. Знайти мінімальне слово.

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

string[] h = new string[20];

String s, b;

String s1 = " ";

s = Console.ReadLine()+" ";

int r = s.Length;

Console.WriteLine(r);

int l = 0;

String d = "";

for (int i = 0; i <= r-1; i++)

{

if ((s[i] != s1[0])) d = d + s[i];

if ((s[i] == s1[0]) && (d != null))

{

l = l + 1; h[l] = d; d = null;

}

}

int min = h[1].Length;

int i1 = 1;

for (int i = 2; i <= l; i++)

{

if (min < h[i].Length)

{

min = h[i].Length; i1 = i;

}

}

Console.WriteLine(h[i1]);

Console.ReadLine();

}

}

}

Проаналізуйте наведені задачі, перевірте їх працездатність в середовищі програмування.

Бажаю успіху.



Загрузить файл

Похожие страницы:

  1. Операції над літерними величинами

    Реферат >> Астрономия
    ... людини, подається у вигляді текстів. Робота по коректовці, оформленню, аналізу ... ічній мові тексти подаються у вигляді літерних величин. Літерні величинивеличини, значеннями яких є слова або тексти ...
  2. Схеми на пасивних елементах та діодах

    Реферат >> Коммуникации и связь
    ... високим і приблизно рівним опору емітерного переходу б-е:Rвх=r е і має порядок одиниць ... визначається величинами резисторів Ro і Rе, і опором навантаження. Принцип роботи СТ даного ... типу аналогічний принципу роботи схеми емітерної стабілізації струму ...
  3. Основні визначення. Приклади алгоритмів

    Лекция >> Информатика, программирование
    ... ільш ефективного використання і полегшення роботи користувача з обчислювальною системою. Виконуючи ... однозадачною або одночасно підтримувати роботу декількох програм - бути ... і слід ввести проміжну літерну величину, наприклад, Z і використовувати отримане ...
  4. Принцип роботи 3УСКТ

    Реферат >> Астрономия
    ... дсилення звукової частоти в ПЧЗ. З емітерного повторювача підсилений по струму відеосигнал ... сигнали основних кольорів підсилюються до величин, необхідних для нормальної ... . Дана структурна схема призначена для роботи з кінескопами із самозведенням типу 51ЛК2Ц ...
  5. Розвиток творчих здібностей молодших школярів у роботі над текстом на уроках української мови в початкових

    Магистерская работа >> Педагогика
    ... - творчі здібності стають незалежною величиною, інакше кажучи, не існує творц ... виявляти увагу до аспектів навчальної роботи, практики роботи з текстом, від яких залежить ... пишалася; справа, кущ, туманом, немов, терну, їжачився, синюватим, повитий. Вправа 4. ...

Хочу больше похожих работ...

Generated in 0.0020289421081543