Читайте также:
|
|
Задания для разбора с преподавателем.
Заданную фамилию распечатать по вертикали.
Самое простое решение – перебрать все символы строки и вывести построчно:
static void Task1(string s)
{
Console.WriteLine("Вывод фамилии {0} в столбик.", s);
for (int i = 0; i < s.Length; i++)
Console.WriteLine(" "+s[i]);
}
Получить строку, состоящую из K заданных символов.
Здесь возможны несколько подходов. Самое быстрое – воспользоваться готовым методом:
static string Task2A(char ch, int k)
{
string s = new String(ch,k);
return s;
//return new String(ch, k);
}
При этом можно даже обойтись без вспомогательной строки (этот вариант закомментарен).
Хотя, собрать строку по символам тоже несложно:
static string Task2B(char ch, int k)
{
string s = "";
for (int i = 0; i < k; i++) s = s + ch;
return s;
}
3. Дана строка. Первые K её символов переставить в конец строки.
Также, как и предыдущую задачу, здесь можно применить или готовые методы, или собрать результат по символам:
static void Task3A(ref string s, int k)
{
string s1 = s.Substring(0, k);
string s2 = s.Remove(0, k);
s = s2 + s1;
}
Здесь s1 – первые К символов исходной строки, а s2 – оставшиеся символы исходной строки.
static string Task3B(string s, int k)
{
string s1 = "";
for (int i = k; i < s.Length; i++) s1 = s1 + s[i];
for (int i = 0; i < k; i++) s1 = s1 + s[i];
return s1;
}
Добавить заданный символ по одному разу между всеми символам заданной строки.
Здесь готовых методов нет, надо собирать итоговую строку по символам:
static string Task4(string s, char ch)
{
string s1 = “”;
for (int I = 0; I < s.Length; i++)
if (I == 0) s1 = s1 + s[i];
else s1 = s1 + ch + s[i];
return s1;
}
Удалить из заданной строки все вхождения заданного символа.
Здесь также надо работать с каждым символом, но сделать это можно по-разному. В первом случае мы формируем новую строку только из «правильных» символов:
static void Task5A(ref string s, char ch)
{
string s1 = "";
for (int i = 0; i < s.Length; i++)
if (s[i]!= ch) s1 = s1 + s[i];
s = s1;
}
Во втором случае в цикле удаляем из строки первое вхождение заданного символа, пока такой будет находиться:
static void Task5B(ref string s, char ch)
{
while (true)
{
int k = s.IndexOf(ch);
if (k < 0) return;
s = s.Remove(k, 1);
}
}
6. Задано предложение, слова которого разделены одним или несколькими пробелами. Распечатать все слова «в столбик».
Решается в несколько этапов. Сначала строка разбивается на подстроки, разделённые одним пробелом. При этом могут появиться пустые строки, например, внутри двойного пробела. Затем из полученного строкового массива на консоль выводятся только непустые строки:
static void Task6(string s)
{
char [] sep = new char [] {' '};
string[] s1 = s.Split(sep);
// string[] s1 = s.Split(new char[] {' '});
foreach (string s2 in s1)
if (s2!= "") Console.WriteLine(s2);
}
В этом примере закомментарен вариант формирования массива подстрок без создания отдельной переменной для массива разделителей (содержащего только символ пробела).
В заданной строке S заменить заданный символ C1 другим заданным символом C2.
Если хорошо знать методы класса String, то задача решается «в одно действие»:
static void Task7B(ref string s, char c1, char c2)
{
s = s.Replace(c1,c2);
}
Иначе придётся перебирать все символы исходной строки:
static void Task7A(ref string s, char c1, char c2)
{
string s1 = "";
for (int i = 0; i < s.Length; i++)
if (s[i] == c1) s1 = s1 + c2;
else s1 = s1 + s[i];
s = s1;
}
Тестирование описанных выше методов можно оформить в следующем виде:
static void Main(string[] args)
{
string s;
Task1("Петров");
Console.WriteLine(Task2A('*', 12));
Console.WriteLine(Task2B('*', 12));
s = "0123456789"; Task3A(ref s, 3); Console.WriteLine("3A: " + s);
s = "0123456789"; Console.WriteLine("3B: " + Task3B(s, 3));
Console.WriteLine(Task4("Петров", '-'));
s = "молоко"; Task5A(ref s, 'о'); Console.WriteLine("5A: " + s);
s = "молоко"; Task5B(ref s, 'о'); Console.WriteLine("5В: " + s);
Task6(" Тиха украинская ночь ");
s = "молоко"; Task7A(ref s, 'о', '+'); Console.WriteLine("7A: " + s);
s = "молоко"; Task7B(ref s, 'о', '+'); Console.WriteLine("7A: " + s);
Console.ReadLine();
}
В итоге, на консоли появится текст, подтверждающий корректность работы методов:
Дата добавления: 2015-10-28; просмотров: 155 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пантум (малайское четверостишие) в прозе 3 страница | | | ИНГАЛЯЦИОННЫХ ПРОТИВОАСТМАТИЧЕСКИХ ПРЕПАРАТОВ. |