Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4 лабораторная работа ОП

.pdf
Скачиваний:
5
Добавлен:
01.12.2023
Размер:
710.91 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

Томский государственный университет систем управления и радиоэлектроники (ТУСУР)

Кафедра безопасности информационных систем (БИС)

Обработка текста

Отчет по практической работе

по дисциплине «Основы программирования»

Студент гр. 711-2

____________ Е. П. Толстолес

___________

11.02.2022

Принял:

Инженер кафедры БИС

_______ Д.Р. Уразаев

11.02.2022

Томск 2022

2

Оглавление

Введение ................................................................................................................

3

2 Листинг программы и процесс их выполнения................................................

5

2.1Листинг исходного кода программ ………………………………………....5

2.2Процесс выполнения программы и вывод данных ………………………10

3 Заключение .........................................................................................................

12

3

1 Введение

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

Задание: составить консольное приложение для решения нижеприведенных задач согласно варианту, согласованному с преподавателем, вводя данные в ходе выполнения программы. Для выполнения предварительно ознакомьтесь с соответствующими разделами данного пособия.

1.Дана строка из N символов. Группы символов, разделенные пробелами

(одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Написать программу, которая в словах с дефисом меняет местами части до и после дефиса.

2.Разработать программу – клавиатурный тренажер. В ходе работы программы должны генерироваться символы, которые необходимо вводить пользователю, количество правильно введенных символов должно подсчитываться, при вводе неверного символа, счетчик правильно введенных символов должен обнуляться, по завершению работы тренажера результат верно введенных символов должен выводиться на экран. Выход из режима тренажера должен осуществляться по нажатию клавиши «Esc». При вводе неверного символа необходимо выдавать звуковое сопровождение (системный звук). При запуске приложения должен предоставляться выбор набор символов какого языка необходимо тренировать: русский или английский.

Согласно условию задач, для решения задач в программах необходимо использовать обработку символов. Для описания символьных переменных

4

служит тип char, соответственно массив символов можно объединить в строку. Для представления строк служит тип string. Символы также имеют коды. Для получения цифрового кода символа достаточно применить операцию перевода в целые: (int) c, где с – символьная переменная. Для получения по коду самого символа достаточно применить операцию по переводу целых в символьные

(char) k, где k – целое число (код символа).

Для ввода и вывода масcива символов с клавиатуры можно использовать следующие команды: char[] rusalf; rusalf = Console.ReadLine().ToCharArray();

Console.WriteLine(rusalf); Работа с массивами символов ничем не отличается от работы с массивами других типов данных, их также можно сортировать пока какому либо признаку, выводить при помощи циклов и т.д. В C# есть специальный тип для хранения строк string, с переменными этого типа можно работать как с обычными переменными сразу задавая и изменяя им значения.

5

2Листинг программы и процесс их выполнения

2.1Листинг исходного кода программ

Листинг программы А представлен ниже.

using System;

namespace _1000_7

{

class Program

{

static void Main(string[] args)

{

string text = Console.ReadLine(); char h = '-';

char p = ' '; int x1 = 0; int x2 = 0; int x3 = 0;

int dlin = text.Length;

var text2 = text.ToCharArray(); char[] sl = new char[100];

for (int i = 1; i < dlin; i++)

{

char tir = text2[i]; if (tir == h)

{

x3 = i;

//ищем левую и правую границы for (int j = i; j > 1; j--)

{

char prob = text2[j]; if (p == prob)

{

x1 = j; break;

}

}

for (int j = i; j < dlin; j++)

{

char prob = text2[j]; if (p == prob)

{

x2 = j; break;

}

}

//ищем длину левого и правого слова int y1 = x3 - x1 + 1;

int y2 = -(x2 - x3);

char[] z1= new char[y1]; char[] z2= new char[y2];

6

//заполняем массивы словами for (int j = 1; j < y1; j++)

{

z1[j]= text2[x1+j];

}

for (int j = 1; j < y2; j++)

{

z2[j] = text2[x3 + j];

}

char[] slovo = new char[y1+y2+1];

for (int j = 1; j < y2; j++)

{

slovo[j]= z2[j];

}

slovo[y2 + 1] = '-';

int k = 0;

for (int j = y2+2; j < y1 + y2 + 1; j++)

{

slovo[j] = z1[k]; k++;

}

//слова меняем местами int o = 0;

for (int j = x1+1; j < x2; j++)

{

text2[j] = slovo[o]; o++;

}

sl = slovo;

}

}

Console.WriteLine(sl);

}

}

}

Листинг программы В представлен ниже.

using System;

using System.Collections.Generic; using System.Linq; using System.Text;

using System.Threading.Tasks; namespace _1000_7

{

class Program

7

{

static void Main(string[] args)

{

char neededKey, pressedKey; int kod, a, d; a = 0; d = 0;

Console.WriteLine("Введите 1 для продолжения на русском языке или 0, если хотите работать на английском:");

int x = int.Parse(Console.ReadLine()); if (x == 0)

{

Random rand = new Random();

Console.WriteLine($"Вводите символы которые видите на экране"); while (true)

{

kod = rand.Next(33, 122); neededKey = (char)kod; var key = ConsoleKey.Escape; Console.Write(neededKey);

pressedKey = Console.ReadKey().KeyChar; key = (ConsoleKey)pressedKey; Console.Write('\b');

if (key != ConsoleKey.Escape) if (neededKey != pressedKey)

{

Console.WriteLine("\nОшибка!"); Console.Beep(); d = 0;

}

else

{

d = d + 1; a = a + 1; Console.WriteLine("\nПравильно: " + d);

}

else

{

Console.WriteLine("\n_Рекорд: " + a);

8

Console.ReadLine();

Environment.Exit(0);

}

}

}

else

{

Random rand = new Random();

Console.WriteLine($"Вводите символы которые видите на экране"); while (true)

{

kod = rand.Next(1040, 1103); neededKey = (char)kod; var key = ConsoleKey.Escape; Console.Write(neededKey);

pressedKey = Console.ReadKey().KeyChar; key = (ConsoleKey)pressedKey; Console.Write('\b');

if (key != ConsoleKey.Escape) if (neededKey != pressedKey)

{

Console.WriteLine("\nОшибка!"); Console.Beep(); d = 0;

}

else

{

d = d + 1; a = a + 1; Console.WriteLine("\nПравильно: " + d);

}

else

{

Console.WriteLine("\n_Ваш рекорд: " + a); Console.ReadLine(); Environment.Exit(0);

9

}

}

}

}

}

}

10

2.2 Процесс выполнения программы и вывод данных

Процесс выполнения программы А и вывод программы представлен на рисунке 2.1.

Рисунок 2.1 – Процесс выполнения программы А

Процесс выполнения программы В и вывод программы представлен на рисунке 2.2.

Рисунок 2.2 – Процесс выполнения программы В