Встроенные типы данных в С#. Массивы. Строки. Регулярные выражения
Лабораторная работа 4
ВСТРОЕННЫЕ ТИПЫ ДАННЫХ В С#. МАССИВЫ.
СТРОКИ. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Выполнил: ст. гр. И-22
Миролюбов В.В.
Проверил:
Забаштанский А.К.
Севастополь 2014
Цель работы
Изучить классификацию типов данных и отличительные
особенности синтаксических конструкций языка C# от C++;
Изучить базовые типы: Array, String, StringBuilder, а также средства
стандартного ввода/вывода и возможности форматирования вывода;
Получить понятие о регулярных выражениях и их применении для
поиска, замены и разбиения текста на синтаксические лексемы.
Вариант задания:
Проработать примеры программ 1-8, данные в теоретических
сведениях. Создать на их основе программы. Получить результаты работы программ
и уметь их объяснить. Внести их в отчет по работе с комментариями.
1. Удалить столбец двухмерного массива вещественных
чисел, в котором находится максимальный элемент этого массива.
2. Дана строка, содержащая текст на русском языке. В
предложениях некоторые из слов записаны подряд несколько раз (предложение
заканчивается точкой или знаком восклицания). Получить в новой строке
отредактированный текст, в котором удалены подряд идущие вхождения слов в
предложениях.
. Задан текст. Выбрать из него все e-mail адреса.
1. Ход работы
Пример
1
using System;laba
{static int Main (string [] args)
{[] firstNames={"Саша", "Маша", "Олег", "Света", "Игорь"};.
WriteLine ("Here is the array: ");i;len = firstNames. Length;
i = 0;(i < len) // Цикл до конца массива
{. WriteLine (firstNames [i]); // Вывод текущего элемента
i++; // Переход на следующий
}. WriteLine ("\n");
Array. Reverse (firstNames);(i=0; i< len;
Console. WriteLine (firstNames [i++]));. WriteLine ("\n");. WriteLine
("Cleared out all but one. ");
Array. Clear (firstNames,1,4); // Очистка всех элементов
кроме первого
len = firstNames. Length;(i=0; i< len; i++).
WriteLine (firstNames [i++] +"\n");
return 0;
}
}
Рис. 1.
- Результаты работы примера 1
Пример 2
using System;laba
{static int Main (string [] args)
{[] firstNames={"Саша",
"Маша", "Олег", "Света", "Игорь"};.
WriteLine ("Here is the array: ");("ИМЕНА!!!", firstNames);0;
}static void PrintAr (string name, Array A)
{. WriteLine (name);(A. Rank)
{1: for (int i = 0; i<A. GetLength (0); i++).
Write ("\t" + name + " [{0}] ={1}", i, A. GetValue (i) +
"\n"); Console. WriteLine ();;2: for (int i = 0; i<A. GetLength
(0); i++)
{(int j = 0; j<A. GetLength (1); j++). Write
("\t" + name + " [{0},{1}] ={2}",A. GetValue (i,j));.
WriteLine ();
};: break;
}
}
}
Рис. 2
- Результаты работы второго примера
Пример 3
using System;laba
{static int Main (string [] args)
{[] firstNames={"Саша", "Маша", "Олег", "Света", "Игорь"};.
WriteLine ("Here is the array: ");();0;
}string CharArrayToString (char [] ar)
{result = "";(int i = 0; i< ar.
Length; result += ar [i++]);(result);
}void PrintCharAr (string name,char [] ar)
{. WriteLine (name);(int i=0; i < ar. Length;
Console. Write (ar [i++]));. WriteLine ();
}static void TestCharArAndString ()
{hello = "Здравствуй, Мир!";[]
strM1 = hello. ToCharArray ();("strM1",strM1);[] World = new char
[3];
Array. Copy (strM1,12,World,0,3); // копирование подстроки
PrintCharAr ("World",World);. WriteLine
(CharArrayToString (World));
}
}
Рис. 3
- Результаты работы третьего примера
Пример 4
using System;System. Text;laba
{static int Main (string [] args)
{. WriteLine ("Here is the array:
");();0;
}static void TestStringBuilder ()
{s1 =new StringBuilder ("ABC"),=new
StringBuilder ("CDE"),= new StringBuilder ();= s1. Append (s2);b1 =
(s1==s3);ch1 = s1 [0], ch2=s2 [0];. WriteLine ("s1={0}, s2={1},
b1={2}," + "ch1={3},ch2={4}", s1,s2,b1,ch1,ch2);s = new
StringBuilder ("Zenon");[0] ='L'; Console. WriteLine (s);
}
}
Рис. 4
- Очередной пример работы программы
Пример 5
using System;System. Text.
RegularExpressions;laba
{static int Main (string [] args)
}string FindMatch (string str, string strpat)
{pat = new Regex (strpat);match =pat. Match
(str);found = "";(match. Success)
{=match. Value;. WriteLine ("Строка ={0}\nбразец={1}^
Найдено={2}", str,strpat,found);
}(found);
}static void TestSinglePat ()
{str, strpat, found;. WriteLine ("Поиск по образцу"); // образец задает подстроку, начинающуюся с
// символа a, далее идут буквы или цифры.
str ="start";=@"a\w+";=
FindMatch (str,strpat); // art str ="fab77cd efg";= FindMatch
(str,strpat); // ab77cd // образец задает подстроку, начинающуюся
// с символa а, заканчивающуюся f с возможными символами b и
d в середине
strpat = "a (b|d) *f";=
"fabadddbdf";= FindMatch (str,strpat); // adddbdf
}
}
Рис. 5
- Результаты работы пятого примера
Пример 6
using System;System. Text.
RegularExpressions;laba
{static int Main (string [] args)
{. WriteLine ("Here is the array:
");str, strpat;. WriteLine ("око и рококо");
strpat="око"; str =
"рококо";
FindMatches (str, strpat); // найдено одно соответствие
return 0;
}void FindMatches (string str, string strpat)
{pat = new Regex (strpat);match =pat. Matches
(str);. WriteLine (" Строка ={0}\nOбразец={1}^ Найдено={2}", str,strpat,match. Count);
}
}
Рис. 6
- Результаты работы программы 6
Пример 7
using System;System. Text.
RegularExpressions;laba
{static void Main ()
{si = "Это строка для поиска"; // найти любой
пробельный символ следующий за
// непробельнымtheReg = new Regex (@" (\S+) \s");
// получить коллекцию результата поиска
MatchCollection theMatches = theReg. Matches
(si); // перебор всей коллекции(Match
theMatch in theMatches)
{. WriteLine ("theMatch. Length: {0}",
theMatch. Length);(theMatch. Length! = 0). WriteLine ("theMatch:
{0}", theMatch. ToString ());
}
}
}
Рис. 7
- Результаты выполнения программы примера 7
Пример 8
using System;System. Text.
RegularExpressions;laba
{static void Main ()
{stringl = "04: 03: 27 127.0.0.0
GotDotNet.ru";theReg = new Regex (@" (? <time> (\d |:)
+\s)" + @" (? <ip> (\d |.) +) \s" + @" (?
<url>\S+)");
// группа time - одна и более цифр или двоеточий, за которыми
сле¬дует пробельный символ
// группа ip адрес - одна и более цифр или точек, за которыми
сле¬дует пробельный символ
// группа url - один и более непробельных символов
MatchCollection theMatches = theReg. Matches (stringl);(Match
theMatch in theMatches)
{(theMatch. Length! = 0)
{ // выводим найденную подстроку
Console. WriteLine ("\ntheMatch: {0}",
theMatch. ToString ()); // выводим группу
"time". WriteLine ("time: {0}", theMatch. Groups
["time"]); // выводим группу
"ip". WriteLine ("ip: {0}", theMatch. Groups
["ip"]); // выводим группу
"url". WriteLine ("url: {0}", theMatch. Groups
["url"]);
}
}
}
}
Рис. 8
- Результат работы программы 8, совпадений нет
Задание
1
using System;laba
{static void Main ()
{N, i, j;= 5;[,] matrix = new float [N, N];rand =
new Random ();(i = 0; i < N; i++) (j = 0; j < N; j++)
matrix [i,j] = rand. Next (10, 50); // заполнение массива случайными числами от 0 до 50
Console. WriteLine ("Исходная Матрица\n");
drawarr (matrix, N, N);max = matrix [0,0];maxj =
0;(i = 0; i < N; i++)(j = 0; j < N; j++)(matrix [i,j] > max)
{
max = matrix [i,j]; // поиск максимального элемента
maxj = j; // запоминание столбца с этим элементом
}
Console. WriteLine ("Столбец с макс. элементом {0}", maxj+1);
if (maxj! = N)(i = 0; i < N; i++)(j = maxj; j
< N-1; j++)[i,j] = matrix [i,j+1];. WriteLine ("Удален столбец с максимальным элементом\n");
drawarr (matrix, N, N-1);
}
public static void drawarr (float [,] arr, int a, int b) // функция вывода
матрицы на экран
{i, j;(i = 0; i < a; i++)
{(j = 0; j < b; j++). Write (arr [i,j] +
" ");. Write ("\n");
}
}
Рис. 9
- Результаты выполнения программы по заданию 1
Задание 2
using System;System. Text.
RegularExpressions;laba {void Main ()
{ishod = "При объявлении массива массива массива границы
задаются выражениями. Если все все все все границы заданы заданы константами.
";theReg = new Regex (@" (\S+) (\s)"); // выделение из строки
каждого отдельного слова
MatchCollection theMatches = theReg. Matches
(ishod);slovo1 = "", slovo2 = "";i = 0;konec =
"";(Match theMatch in theMatches)
{(i == 0)
{= theMatch. ToString (); // первое слово+= slovo1;
}
{= theMatch. ToString ();(slovo2! = slovo1) {slovo1
= slovo2; konec += slovo1; }
}= 1;
}. WriteLine ("Исходная строка");.
WriteLine (ishod + "\n");. WriteLine ("Отредактированная строка");.
WriteLine (konec);
}
}
массив синтаксическая конструкция язык
Рис. 10
- Результаты выполнения программы номер 3
Задание 3
using System;System. Text.
RegularExpressions;laba {void Main ()
{
string ishod = "Дело было так lslk@dsf.com и sssmonstr@com.com пошли к DEMENTOR@AZKABAN. DETH";
Regex theReg = new Regex (@"\w+@\w+. \w+"); // выделение из
строки каждого отдельного слова
MatchCollection theMatches = theReg. Matches
(ishod);email;(Match theMatch in theMatches)
{= theMatch. ToString ();. WriteLine (email);
}
}
}
Рис.11 - Результаты выполнения программы по пункту 3
Вывод
изучена классификация типов данных и отличительные
особенности синтаксических конструкций языка C# от C++;
изучены базовые типы: Array, String, StringBuilder, а также средства
стандартного ввода/вывода и возможности форматирования вывода;
получено понятие о регулярных выражениях и их применении для
поиска, замены и разбиения текста на синтаксические лексемы.