
4 курс (заочка) / Лабораторные работы / ЛР7 (A) - ТП
.docxОрдена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «Московский технический университет связи и информатики»
Центр заочного обучения по программам бакалавриата
Кафедра «Математической кибернетики и информационных технологий»
Дисциплина: Технологии программирования
Лабораторная работа №7
Обработка текстовых строк
Выполнил: Иванов И.И., студент группы БСТ17XX Вариант №7
Проверил: Клешнин Н.Г.
Москва, 2021
Введение
В данной лабораторной работе мы изучаем создание программы, позволяющей произвести проверку попадания точки в область на плоскости. Необходимо написать программу, которая будет удовлетворять заданным условиям, указанным в варианте задания.
Задание
Требуется выделить в строке-предложении s все слова, разделенные символами-разделителями «_.,;:\n\t!?», и обработать выделенные слова в соответствии с вариантом задания.
Определения:
Регулярное слово – слово, состоящее только из больших латинских букв.
Палиндром – это слово, которое одинаково читается слева направо и справа налево.
Алфавитный порядок задается таблицей ASCII.
Вариант задания
Уровень A
A7. Напечатать все слова, состоящие только из цифр.
Код программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace lab7
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите строку-предложение s: ");
string s = Console.ReadLine();
char[] charArr = s.ToCharArray();
List<string> wordsList = new List<string>();
string memory = "";
for(int i = 0; i < charArr.Length; i++)
{
if (isSeparator(charArr[i]))
{
if (memory.Length > 0)
{
wordsList.Add(memory);
memory = "";
}
}
else
{
memory += charArr[i];
}
}
if (memory.Length > 0) //необходимо, чтобы не терять последнее слово, если нет разделителя в конце строки.
{
wordsList.Add(memory);
}
string[] strArr = wordsList.ToArray();
showString(strArr);
string[] taskArr = taskCheck(wordsList);
showString(taskArr);
Console.ReadKey();
}
static bool isSeparator(char curr)
{
char[] separator = {' ', '_', '.', ',', ';', ':', '\n', '\t', '!', '?'};
for(int i = 0; i < separator.Length; i++)
{
if (curr == separator[i])
return true;
}
return false;
}
static void showString(string[] strArr)
{
Console.WriteLine(String.Join(" | ", strArr));
}
static string[] taskCheck (List<string> wordsList)
{
List<string> task = new List<string>();
int firstASCIIcode = 48;
int lastASCIIcode = 57;
for (int i = 0; i < wordsList.Count; i++)
{
char[] currWord = wordsList[i].ToArray();
for (int j = 0; j < currWord.Length; j++)
{
if (currWord[j] < firstASCIIcode || currWord[j] > lastASCIIcode)
break;
else
if (j == currWord.Length - 1)
task.Add(wordsList[i]);
}
}
return task.ToArray();
}
}
}
Результаты работы программы
Заключение
В ходе выполнения лабораторной работы была написана программа, содержащая циклический вычислительный процесс, с помощью которой мы смогли выполнить поставленную перед нами задачу.