Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Встроенные типы данных 3 страница




Object array: 1 2 28 29 30

 

After copying the last two elements of the Object array to the integer array,

integer array: 1 2 3 29 30

Object array: 1 2 28 29 30

*/

Рассмотрим пример, в котором массив генерируется случайным образом. Сформировать массив целых чисел X(N), N<100, элементами которого являются случайные числа в диапазоне [–20..20]. Найти максимальный элемент и его номер. Для генерации случайных чисел необходимо создать объект класса System.Random и в цикле при присвоении значения элементу массива использовать для этого объекта метод Next(), который возвращает целое число со знаком, которое больше или равно нулю и меньше, чем MaxValue. В нашем примере будем использовать метод Next (int a. int b), которые возвращает целевое число с диапазоне [a, b).

class Program

{

static void Main()

{

 

const int N = 100;

int n;

string buf;

do

{

Console.WriteLine("\nEnter n (1-" + N + "): ");

buf = Console.ReadLine();

n = Convert.ToInt32(buf);

}

while (n <= 0 || n > N);

sbyte[] A = new sbyte[n];

const int k = 20;// граница диапозона [-20,20]

sbyte max = -k-1, imax = -1;

Random r = new Random(); //

for (sbyte i=0; i<A.Length; i++)

{

A[i]=(sbyte) r.Next(-k,k+1); //генерируем массив случайных чисел

//в диапазоне [-k..k]

Console.WriteLine("A[{0}]={1}", i, A[i]);//вывод элемента массива на экран

if (A[i]>max) {max=A[i]; imax=i;}// поиск максисума

}

Console.WriteLine("\nmax=A[{0}]={1}",imax, max);

Array.Sort(A);

Console.WriteLine("Sorted array: ");

foreach (int a in A)

Console.WriteLine(a);

Console.ReadKey();

}

}

Если бы в задаче требовалось создать массив положительных чисел, то можно было бы воспользоваться методом NextBytes, который заполняет элементы указанного массива байтов случайными числами. Например,

Random rnd = new Random();

Byte[] b = new Byte[10];

rnd.NextBytes(b);

Console.WriteLine("The Random bytes are: ");

for (int i = 0; i < 10; i++) {

Console.Write(i);

Console.Write(":");

Console.WriteLine(b[i]);

}

Если вызывается метод класса Array, в качестве параметра которого требуется использовать предикат (например, методы Find, FindLast, FindAll), то надо знать, что в качестве предиката можно указать статический метод класса, обычно имеющий тип bool. Для примера рассмотрим метод FindAll. Он формирует новый массив из элементов заданного массива (указанного в качестве первого параметра метода), которые удовлетворяют предикату (указанному в качестве второго параметра метода). Если такие элементы не найдены, то создается пустой массив Array. Рассмотрим пример, в котором создается новый массива из элементов заданного массива, кратных двум. Для этого определим функцию f, которое проверяет целое число на четность. Именно ее имя будем использовать как второй параметр метода FindAll.

class Program

{

static bool f (int k)

{

if (k%2==0) return true;

return false;

 

}

static void Main()

{

int[] A = { 1, 2, 3, 4, 5, 6, 7 };

foreach (int a in A)

Console.Write("\t" + a);

Console.WriteLine();

 

int [] B = Array.FindAll(A, f);

foreach (int b in B)

Console.Write("\t" + b);

Console.WriteLine();

Console.ReadKey();

}

}

Результат работы программы:

1 2 3 4 5 6 7

2 4 6

Многомерный (прямоугольный) массив имеет более одной размерности. Чаще всего в программах используются двумерные массивы.

Простейшее описание двумерного массива имеет следующий вид:

тип [,] имя [инициализрующий_список];

Например, int [,]a,b;

В качестве инициирующего списка можно как и в случае с одномерным массивом использовать:

1. явный список констант, заключенный в инструктивные скобки, например,

int[,] c = {{1, 2, 3}, {4, 5, 6}};

2. конструкторы класса Array c помощью операции new, например

int[,] d = new int[2, 3];

int[,] e = new int[,] {{1, 2, 3}, {4, 5, 6}};

int[,] f = new int[2,3] {{1, 2, 3}, {4, 5, 6}};

Для обращения к элементу двумерного массива используется два индекса, например, с[i][j]. Для работы с двумерными массивами используется конструкция вложенных циклов.

 

Рассмотрим пример метода, выполняющего перемножение двух матриц

class Program

{

static int [,] MultMatr(int[,] A, int[,] B)

{

if (A.GetLength(1)!= B.GetLength(0)) throw new Exception("Размерности матриц не равны");

int[,] C = new int[A.GetLength(0), B.GetLength(1)];

for (int i = 0; i < A.GetLength(0); i++)

for (int j = 0; j < B.GetLength(1); j++)

{

int s = 0;

for (int k = 0; k < A.GetLength(1); k++)

s += A[i, k] * B[k, j];

C[i, j] = s;

}

return C;

}//MultMatr

 

static void Main()

{

const int n1 = 2, m1 = 3, n2 = 3, m2 = 4;

int[,] a = new int[n1, m1] { { 1, 1, 1 }, { 2, 2, 2 } };

int[,] b = new int[n2, m2] { { 1, 2, 3, 4 }, { 1, 2, 3, 4 }, { 1, 2, 3, 4 } };

 

try

{

int[,] c =MultMatr(a, b);

 

for (int i = 0; i < c.GetLength(0); i++)

{

for (int j = 0; j < c.GetLength(1); j++) Console.Write("\t" + c[i, j]);

Console.WriteLine();

}

}

catch (Exception e) { Console.WriteLine(e.Message); }

 

Console.ReadKey();

}

}

Обратите внимание, что в циклах for индекс массива изменяется от нуля до значения, вычисляемого с помощью метода класса GetLength. Это предпочтительней, чем указывать в виде верхней границы константу, т.к. делает программу более надежной.

В ступенчатых массивах (массив массивов) количество элементов в разных строках может различаться. В памяти ступенчатый массив хранится иначе, чем прямоугольный: в виде нескольких внутренних массивов, каждый из которых имеет свой размер. Кроме того, выделяется отдельная область памяти для хранения ссылок на каждый из внутренних массивов (рис 1.).

Простейшее описание ступенчатого массива имеет следующий вид:

тип [][] имя [инициализрующий_список];

Например, int [][]a;

Для инициализации такого массива нельзя использовать запись new int[n][m]. Для каждого массива нижнего уровня нужно вызывать конструктор. В этом и состоит сложность объявления таких массивов. Рассмотрим примеры такой инициализации.

//массив массивов - формальный пример

//объявление и инициализация

int[][] jagger = new int[3][]

{

new int[] {5,7,9,11},

new int[] {2,8},

new int[] {6,12,4}

};

Массив jagger имеет два уровня. Можно считать, что у него три элемента, каждый из которых является массивом. Для каждого такого массива необходимо вызвать конструктор new, чтобы создать внутренний массив. В данном примере элементы внутренних массивов получают значение, будучи явно инициализированы константными массивами. Конечно, допустимо и такое объявление:

int[][] jagger1 = new int[3][]

{

new int[4],

new int[2],

new int[3]

};

В этом случае элементы массива получат при инициализации нулевые значения. Реальную инициализацию нужно будет выполнять программным путем. Стоит заметить, что в конструкторе верхнего уровня константу 3 можно опустить и писать просто new int[][].Вызов этого конструктора можно вообще опустить, он будет подразумеваться:

int[][] jagger2 =

{

new int[4],

new int[2],

new int[3]

};

Рассмотрим пример работы со ступенчатыми массивами: вывод массива на экран

int[][] a = new int[3][];

a[0] = new int [5] { 24, 50, 18, 3, 16 };

a[1] = new int [3] { 7, 9, -1 };

a[2] = new int [4] { 6, 15, 3, 1 };

Console.WriteLine("Исходный массив:");

foreach (int [] mas1 in a)

{

foreach (int x in mas1)

Console.Write("\t" + x);

Console.WriteLine();

}

Рассмотрим еще один пример для работы со ступенчатыми массивами. Написать и протестировать метод, который возвращает ступенчатый массив, сгенерированный на основе заданного ступенчатого массива следующим образом. В начало каждой строки заданного массива добавляется элемент, равный единице. Метод должен генерировать хотя бы одно исключение. Ступенчатый массив должен генерироваться случайным образом из нулей и единиц и выводиться на экран в методе Main.

 

class Program

{

 

static void Main()

{

/*Создание ступенчатого массива и генерация его элементов случайным образом*/

Console.Write("Введите количество строк в ступенчатом массиве: ");

int n = int.Parse(Console.ReadLine());

int[][] ar = new int[n][];

int m;

Random r = new Random();

for (int i = 0; i < n; i++)

{

Console.Write("Введите количество строк в {0} - ой строке ступенчатого массива: ", i);

m = int.Parse(Console.ReadLine());

ar[i] = new int[m];

for (int j = 0; j < m; j++)

ar[i][j] = r.Next(0, 2);

}

//Вывод массива на экран

Console.WriteLine ("Исходный массив: ");

foreach (int[] mas in ar)

{

foreach (int el in mas)

Console.Write("\t" + el);

Console.WriteLine();

}

try

{

int[][] ar_new = f(ar);

//Вывод массива на экран

Console.WriteLine("Новый массив: ");

foreach (int[] mas in ar_new)

{

foreach (int el in mas)

Console.Write("\t" + el);

Console.WriteLine();

}

}

catch (Exception e) { Console.WriteLine(e.Message); }

 

 

Console.ReadKey();

}

//Функция, возвращающая новый ступенчатый массив

static int [][] f (int [][] a)

{

int n= a.GetLength(0);// количество строк

if (n==0) throw new Exception("Невозможно преобразовать заданный массив, так как нем 0 строк ");

int[][] b = new int[n][];

for (int i = 0; i < n; i++)

{

b[i] = new int[a[i].Length+1];

b[i][0] = 1;

for (int j = 1; j < b[i].Length; j++)

b[i][j] = a[i][j-1];

}

 

return b;

}

 

}

 

 

Задание 6. Одномерные массивы

Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1–12.

1. В целочисленном массиве X (N), сгенерированном случайным образом, нечетные элементы увеличить в два раза, а у элементов с четными номерами заменить знаки на противоположные. Использовать в программе оператор foreach.

2. В целочисленном массиве, сгенерированном случайным образом, определить количество перемен знака. Использовать в программе оператор foreach.

3. В целочисленном массиве, сгенерированном случайным образом, найти наименьший из положительных элементов. Использовать в программе оператор foreach.

4. Для целочисленного массива, сгенерированного случайным образом, определить, образуют ли его элементы неубывающую последовательность. Использовать в программе оператор foreach.

5. Проведено измерение роста 70 студентов. Данные записаны в массиве ROST. Разместить в массиве N R номера тех студентов, чей рост меньше 180 см и подсчитать число таких студентов. Использовать в программе оператор foreach.

6. Результаты сдачи экзамена группой из N студентов находятся в массиве REZ. Подсчитать количество студентов, сдавших экзамен на «хорошо» и «отлично». Использовать в программе оператор foreach.

7. Из целочисленного массива X (N), сгенерированного случайным образом, переписать в массив Y элементы массива X c нечетными номерами, а в массив Z – элементы массива X, значения которых кратны 5. Использовать в программе оператор foreach.

8. Сформировать случайным образом массив X (N), элементами которого могут быть только 0 и 1. Проверить, существует ли строгое чередование 0 и 1. Использовать в программе оператор foreach.

9. Сформировать целочисленный массив X (N), элементами которого являются случайные числа из диапазона [–3..3]. Определить, сколько раз в нем встретилось два подряд идущих нулевых элемента. Использовать в программе оператор foreach.

10. Сформировать целочисленный массив X (N), элементами которого являются случайные числа из диапазона [–20..10]. Найти величину наибольшего среди отрицательных чисел этого массива. Использовать в программе оператор foreach.

11. Сформировать вещественный массив X 1(N), элементами которого являются случайные числа из диапазона [0..50]. Переслать из него в массив X 2 все элементы, значения которых больше 24 и меньше 34. Использовать в программе оператор foreach.

12. Сформировать целочисленный массив X (N), элементами которого являются случайные числа из диапазона [–40..40]. Подсчитать сумму элементов этого массива, значения которых кратны 8. Использовать в программе оператор foreach.

.

 

Задание 7. Многомерные массивы и массивы массивов

Каждому студенту рекомендуется выполнить хотя бы одно из упражнений 1–12.

1. Написать и протестировать метод, находящий сумму элементов заданной целочисленной квадратной матрицы, распложённых на диагонали, «ортогональной» главной. Метод должен генерировать хотя бы одно исключение. Квадратная матрица должна генерироваться случайным образом и выводиться на экран в методе Main.

2. Написать и протестировать метод, находящий сумму элементов заданного целочисленного ступенчатого массива, расположенных на первой и последней позиции каждой строки. Метод должен генерировать хотя бы одно исключение. Ступенчатый массив должен генерироваться случайным образом и выводиться на экран в методе Main.

3. Написать и протестировать метод, находящий произведение элементов каждой строки заданной целочисленной прямоугольной матрицы и возвращающий массив этих произведений. Метод должен генерировать хотя бы одно исключение. Прямоугольная матрица должна генерироваться случайным образом и выводиться на экран в методе Main.

4. Написать и протестировать метод, находящий произведение элементов каждой строки заданного целочисленного ступенчатого массива и возвращающий массив этих произведений. Метод должен генерировать хотя бы одно исключение. Ступенчатый массив должен генерироваться случайным образом и выводиться на экран в методе Main.

5. Написать и протестировать метод, находящий максимальный элемент каждой строки заданной целочисленной прямоугольной матрицы и возвращающий массив этих максимальных элементов. Метод должен генерировать хотя бы одно исключение. Прямоугольная матрица должна генерироваться случайным образом и выводиться на экран в методе Main.

6. Написать и протестировать метод, который преобразует заданную целочисленную прямоугольную матрицу таким образом, чтобы на месте первой строки находилась вторая, на месте второй – третья, и т.д., а на месте последней – первая. Результатом работы метода является преобразования матрица. Метод должен генерировать хотя бы одно исключение. Прямоугольная матрица должна генерироваться случайным образом и выводиться на экран в методе Main.

7. Написать и протестировать метод, который в заданной целочисленной прямоугольной матрице ищет все числа, равные заданному числу и возвращает массив, содержащий позиции таких чисел. Метод должен генерировать хотя бы одно исключение. Прямоугольная матрица должна генерироваться случайным образом и выводиться на экран в методе Main.

8. Написать и протестировать метод, который в заданном целочисленном ступенчатом массиве ищет все числа, равные заданному числу и возвращает массив, содержащий позиции таких чисел. Метод должен генерировать хотя бы одно исключение. Ступенчатый массив должен генерироваться случайным образом и выводиться на экран в методе Main.

9. Написать и протестировать метод, который возвращает прямоугольную матрицу, транспонированную из заданной целочисленной матрицы. (Операция транспонирования заключается в том, что строки и столбцы в исходной матрице меняются местами). Метод должен генерировать хотя бы одно исключение. Прямоугольная матрица должна генерироваться случайным образом и выводиться на экран в методе Main.

10. Написать и протестировать метод, который возвращает ступенчатый массив, сгенерированный на основе заданного целочисленного ступенчатого массива следующим образом. Из каждой строки заданного массива удаляется первый и последний элементов. Если строка заданного массива имеет 2 и менее элемента, то строка нового массива содержит один элемент, равный -1. Метод должен генерировать хотя бы одно исключение. Ступенчатый массив должен генерироваться случайным образом положительными числами и выводиться на экран в методе Main.

11. Написать и протестировать метод, который возвращает ступенчатый массив, сгенерированный на основе заданного ступенчатого массива следующим образом. Из каждой строки заданного массива удаляются все элементы равные нулю. Если все строки заданного массива равны нулю, то строка нового массива содержит один элемент, равный -1. Метод должен генерировать хотя бы одно исключение. Ступенчатый массив должен генерироваться случайным образом из нулей и единиц и выводиться на экран в методе Main.

12. Написать и протестировать метод, возвращай сгенерированный случайным образом ступенчатый массив, в котором n строк, первая строка имеет m элементов, а каждая следующая на единицу больше. Метод должен генерировать хотя бы одно исключение. Числа n и m должны вводиться с клавиатуры в методе Main и полученный массив должен выводиться на экран в методе Main.

 

 


 

Глава 6. Символы и строки

Для хранения текстовой информации в языке C# используют следующие типы данных:

· встроенный тип данных char

· массивы типа char

· встроенный тип данных string

· строки типа StringBuilder

Рассмотрим каждый из них

Встроенный тип данных char представляет собой класс, предназначенный для хранения символов в двухбайтовой кодировке Unicode. Класс содержит методы анализа и преобразования символов, некоторые из которых приведены в таблице 1. Подробнее с методами данного класса можно познакомиться в библиотеке MSDN[12].

Таблица6. 1.

Методы класса Char

Метод Описание
GetNumericValue Возвращает числовое значение символа, если он является цифрой, и –1 в противном случае
IsControl Возвращает true, если символ является управляющим
IsDigit Возвращает true, если символ является десятичной цифрой
IsLetter Возвращает true, если символ является буквой
IsLower Возвращает true, если символ задан в нижнем регистре
IsUpper Возвращает true, если символ записан в верхнем регистре
IsWhiteSpace Возвращает true, если символ является пробельным (пробел, перевод строки и возврат каретки)
Parse Преобразует строку в символ (строка должна состоять из одного символа)
ToLower Преобразует символ в нижний регистр
MaxValue, MinValue Возвращают символы с максимальным и минимальным кодами (эти символы не имеют видимого представления)

Например, является ли символ, введенный с клавиатуры можно проверить следующим образом.

char a = char.Parse(Console.ReadLine());

if (char.IsLetter(a)) Console.WriteLine("Буква");

else Console.WriteLine("Не Буква");

Массив символов, как и массив любого другого типа, построен на основе базового класса Array. Инициализировать данный массив можно либо явным перечислением символьных констант в фигурных скобках, либо использую метод ToCharArray() для заданной строковой константы, например:

char[] a = { 'H', 'e', 'l', 'l', 'о'};

char[] b = "Hello".ToCharArray();

На практике, символьные массивы часто используются как параметры методов класса String.

 

Встроенный тип данных string представляет собой класс, предназначенный для работы со строками символов в кодировке Unicode

Создать строку можно несколькими способами:

string s1; // инициализация отложена

string s2 = "qqq"; // инициализация строковым литералом

string s3 = new string(); // инициализация пустой строки

string s4 = new string('a', 10); // конструктор создает строку из 10 символов ‘a’

char[] a = "Hello".ToCharArray(); // массив для инициализации строки

string s5 = new string(a); // создание из массива символов

string s6=Console.ReadLine();//инициализация строковым литералом

Отметим, что строки типа string относятся к так называемым неизменяемым типам данных. Методы, изменяющие содержимое строки, на самом деле создают новую копию строки. Неиспользуемые "старые" копии автоматически удаляются сборщиком мусора.

Строки типа string являются ссылочным типом данных, однако в классе для них следующие операции, которые работают не со ссылки, а со значения строк:

- присваивание (=);

- проверка на равенство (==); (строки равны, если имеют одинаковое количество символов и совпадают посимвольно);

- проверка на неравенство (!=);

- обращение по индексу ([]) (обращаться к отдельному элементу строки по индексу можно только для получения значения, но не для его изменения);

- сцепление (конкатенация) строк (+).

Для получения длины строки используют свойство Length.

В следующем примере с клавиатуры считываются две строки, сравниваются и выводятся поочередно символы из первой и второй строки, а затем «остаток» более длинной строки.

Console.Write("Введите строки: ");

string s1=Console.ReadLine();

string s2= Console.ReadLine();

if (s1 == s2) Console.WriteLine("Строки равны");

else Console.WriteLine("Строки не равны");

if (s1.Length < s2.Length)

{

for (int i = 0; i < s1.Length; i++)

Console.Write("{0}{1}", s1[i], s2[i]);

for (int i = s1.Length; i < s2.Length; i++) Console.Write(s2[i]);

}

else

{

for (int i = 0; i < s2.Length; i++)

Console.Write("{0}{1}",s1[i],s2[i]);

for (int i = s2.Length; i < s1.Length; i++) Console.Write(s1[i]);

}

Если s1= “aaa”, s2= “bbbbb”, то результат работы программы следующий:

Строки не равны

abababbb

В классе String определено множество методов, позволяющих выполнять со строками практически любые действия, некоторые из которых приведены в таблице 2. Подробнее с методами данного класса можно познакомиться в библиотеке MSDN[13].

Таблица 6.2.

Методы класса String

Метод Описание
Compare Сравнение двух строк в лексикографическом (алфавитном) порядке. Разные реализации метода позволяют сравнивать строки и подстроки с учетом и без учета регистра и особенностей национального представления дат и т. д.
Concat Конкатенация строк. Метод допускает сцепление произвольного числа строк
Copy Создание копии строки
Format Форматирование в соответствии с заданными спецификаторами формата (см. далее)
IndexOf, IndexOfAny, LastIndexOf, LastIndexOfAny Определение индексов первого и последнего вхождения заданной подстроки или любого символа из заданного набора
Insert Вставка подстроки в заданную позицию
Join Слияние массива строк в единую строку. Между элементами массива вставляются разделители (см. далее)
Length Длина строки (количество символов)
Split Разделение строки на элементы, используя заданные разделители. Результаты помещаются в массив строк
Substring Выделение подстроки, начиная с заданной позиции
ToCharArray Преобразование строки в массив символов
ToLower, ToUpper Преобразование символов строки к нижнему или верхнему регистру

Пример. Вывести слова введенной строки, начинающиеся с гласной буквы, на экран столбиком, без разделительных знаков (пробел, табуляция, точка, запятая и т.п.).

Для выделения слов из строки будем использовать метод string [] Split (char [] A), который возвращает строковый массив, содержащий подстроки данной строки, разделенные элементами заданного массива символов A. В качестве массива A зададим всевозможные разделители слов.

Для каждого слова будем проверять, начинается ли оно с гласной буквы, с помощью метода int IndexOfAny(char[] A), который возвращает индекс (с отсчетом от нуля) первого обнаруженного в данной строке символа из указанного массива символов A. В качестве A зададим массив гласных букв.

class Program

{

static void Main()

{

Console.Write("Введите строку: ");

string s=Console.ReadLine();

char [] razd = ".;!&,".ToCharArray();//массив разделителей

string []s_new = s.Split(razd);//создание массива слов из строки

 

char []glas ="aeoiuyAEOIUY".ToCharArray();//массив гласных букв

foreach (string el in s_new)

if (el.IndexOfAny(glas)==0) Console.WriteLine(el);

Console.ReadKey();

}

}

Строки типа string нельзя изменять. Если требуется изменять строки, то рекомендуется использовать класс StringBuilder из пространства имен System.Text. Объекты этого класса объявляются только с явным вызовом конструктора класса, например,

StringBuilder s1 =new StringBuilder("ABC");

Над строками этого класса определены те же операции (кроме операции конкатенации +), что и над строками класса String. Причем с помощью операции обращения по индексу ([]) можно не только обратиться к отдельному элементу строки, но и изменять его. Конкатенацию можно заменить вызовом метода Append. Рассмотрим пример, в котором две строки вводятся с клавиатуры, в каждой из них изменяется первый символ, а затем осуществляется их конкатенация.

Console.Write("Введите строки: ");

StringBuilder sb1 = new StringBuilder (Console.ReadLine());

StringBuilder sb2 = new StringBuilder(Console.ReadLine());

sb1[0] = 'A';

sb1[0] = 'A';

sb1.Append(sb2);

Console.WriteLine(sb1);

Если sb1= “bbb”, sb2= “cccc”, то на экран будет выведено “AbbAccc”

Заметим, что у класса StringBuilder методов значительно меньше, чем у класса String, поэтому обычно с таким строками работают следующим образом:

1) определяется строка класса StringBuilder;

2) выполняются операции, требующие изменение значения;

1) полученная строка преобразуется в строку класса String с помощью метода ToString();

2) над этой строкой выполняются операции, не требующие изменения значения строки.

Например, в следующем коде в начало созданной строки StringBuilder вставляется слово “мама” с помощью метода Insert, и после преобразования в строку класса String применяется метод Split.

StringBuilder s1 = new StringBuilder ("мыла раму");

s1.Insert(0, "Мама ");

string s2 = s1.ToString();

foreach (string w in s2.Split(' '))

Console.WriteLine(w);

В результате работы данной программы на экран будет выведено:

Мама

мыла

раму

 

Задание 8. Работа со строками

1. Дана текстовая строка. Вывести на печать все ее слова в таком порядке: все однобуквенные, потом все двухбуквенные, потом все трехбуквенные и т.д. до слова максимальной длины, используя методы класса String или StringBuilder.

2. Даны текстовая строка и слово (например, ba). Напечатать все слова, входящие в эту текстовую строку, начинающиеся с букв заданного слова (например, bak, barber, baab, baalam), используя методы класса String или StringBuilder.

3. Дана текстовая строка. Сформировать строку, состоящую из последних букв слов заданной текстовой строки, используя методы класса String или StringBuilder и вывести ее на экран. Например, если задана строка adcd ef ghi jklmn, то на экран должно быть выведено слово dfin.




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 665; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.17 сек.