Вправи з використанням рядкового типу даних(string).
1. Реверс рядка
Реверс – перетворення символів рядка, коли остання буква в тексті стає першою, а перша - останньою.
Завдання: Написати програму для отримання реверсного рядка.
using System;
class Program
{
static string Reverse(string str)
{
//змінна для зберігання результату
var retValue = string.Empty;
foreach(var symbol in str)
{
//приклеюємо символ на початок рядка
retValue = symbol + retValue;
}
return retValue;
}
static void Main(string[] args)
{
Console.Write("Введіть текст для реверсування: ");
var s = Console.ReadLine();
Console.WriteLine($"Реверс рядка: {Reverse(s)}");
Console.ReadLine();
}
}
2. Капіталізація тексту
Капіталізація тексту – зміна перших букв в словах на великі. Наприклад: “заголовок статті” після перетворення – “Заголовок Статті”.
Завдання: Написати програму, яка здійснює капіталізацію введеного користувачем тексту. В якості розділювача слів використовувати пробіл.
Для вирішення завдання капіталізації рядка, необхідно:
- Прочитати введений користувачем текст;
- Розбити його на окремі слова;
- Для кожного слова отримати першу букву та змінити її регістр;
- Видалити з кожного слова перший символ;
- Об’єднати отримане значення першого символу з залишком від слова;
- Після обробки всіх слів, об’єднати їх в один рядок.
using System;
class Program
{
static string CapitalizeString(string s)
{
//розбиваємо текст на слова
var parts = s.Split(" ", StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < parts.Length; i++)
{
//отримуємо першу літеру
var firstLetter = parts[i].Substring(0, 1).ToUpper();
//з'єднуємо символ та залишок від слова
parts[i] = firstLetter + parts[i].Remove(0, 1);
}
//склеюємо масив рядків
return string.Join(" ", parts);
}
static void Main(string[] args)
{
Console.Write("Введіть текст для перетворення: ");
var s = Console.ReadLine();
var result = CapitalizeString(s);
Console.WriteLine($"Результат: {result}");
Console.ReadLine();
}
}
3. Паліндром
Паліндром – слово чи текст, який читається однаково як зліва направо, так і справа наліво.
Завдання: Перевірити, чи є введений користувачем, текст паліндромом. Пробіли та регістр символів в рядку ігнорувати.
Алгоритм вирішення задачі з паліндромом:
- Отримати текст з клавіатури;
- Видалити з нього всі пробіли;
- Перевести символи рядка в один регістр(не має значення в який, використовуйте той, з яким вам зручніше працювати);
- Послідовно порівнювати символи з початку та кінця рядка наближаючись до середини: перший з останнім, другий з другим з кінця і т.д.
using System;
class Program
{
static bool IsPalindrom(string text)
{
//видаляємо пробіли
var s = text.Replace(" ", string.Empty);
//переводимо в нижній регістр
s = s.ToLower();
//індекс останнього символу
int lastIndex = s.Length - 1;
for (int i = 0; i < s.Length / 2; i++)
{
//якщо символи не однакові, повертаємо false
if (s[i] != s[lastIndex - i])
{
return false;
}
}
return true;
}
static void Main(string[] args)
{
Console.Write("Введіть рядок для перевірки: ");
var text = Console.ReadLine();
var res = IsPalindrom(text) ? string.Empty : "не ";
Console.WriteLine($"Рядок \"{text}\" {res}є паліндромом");
Console.ReadLine();
}
}
Також перевірку можна реалізувати шляхом порівняння рядка з його реверсом(метод описано вище):
static bool IsPalindrom(string text)
{
//видаляємо пробіли
var s = text.Replace(" ", string.Empty);
//переводимо в верхній регістр
s = s.ToUpper();
//порівнюємо рядок з його реверсом
return s == Reverse(s);
}