ОП5
.docx
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра безопасности информационных систем (БИС)
Обработка символов и структур
Лабораторная работа №5 по дисциплине «Основы программирования»
Отчет по лабораторной работе
Студент гр. 739-1
_______Климанов М. Д.
16.05.2020
Принял
Доцент кафедры БИС
_______Харченко С.С.
16.05.2020
Томск 2020
1 Введение
Цель работы: овладеть навыками использования структур программирования и обработке символьных переменных.
Задание 1 Составить программу, которая проверяет правописание << ча - ща >> (т.е. если в заданном тексте после << ч >> или << щ >> встретится << я >>, то программа должна выдавать сообщение об ошибке).
Задание 2: Багаж пассажира, характеризуется количеством вещей ( целый тип ) и общим весом вещей (вещественный тип). Дан список из сведений о багаже 10 пассажиров. Число пассажиров, количество вещей которых превосходит среднее число вещей по всему списку
2 Теоретические сведения
2.1 Обработка символов
Для описания символьных переменных служит тип char, соответственно массив символов можно объединить в строку. Для представления строк служит тип string. Но для начала рассмотрим работу просто с отдельными символами. Зна-чение символьной переменной может быть задано как с помощью команды присваивания так и с помощью команды ввода.
Символы в также имеют коды. Для получения цифрового кода символа достаточно применить операцию перевода в целые: (int) c, где с – символьная переменная. Для получения по коду самого символа достаточно применить операцию по переводу целых в символьные (char) k, где k – целое число (код символа).
Управляющие символы – это символы, встраиваемые в текст, для управления форматом, цветом и другими опциями вывода в текстовом терминале.
Таблица основных управляющих символов представлена ниже.
Таблица 1. Список основных управляющих символов.
\' |
одинарная кавычка |
|
|
\" |
двойная кавычка |
\? |
вопросительный знак |
\\ |
обратная косая черта |
|
|
\0 |
нулевой символ |
\a |
звуковой сигнал |
\b |
символ возврата на один символ назад ("забой") |
\f |
перевод страницы - новая страница |
\n |
перевод строки - новая строка |
\r |
возврат каретки |
|
|
\t |
горизонтальная табуляция |
|
|
\v |
вертикальная табуляция |
|
|
2.2 СТРУКТУРЫ
Одна из особенностей языка С# – это возможность создавать данные новых типов. Причем, данные нового типа могут быть комбинацией данных различного типа. Такие данные называют структурами. А затем новый струк-турный тип, как обычно, можно использовать для объявления новых перемен-ных. Доступ к отдельным элементам структуры осуществляется операцией «.» (точка). Тип структуры представляет собой тип значения, который может ин-капсулировать данные и связанные функции. Для определения типа структуры используется ключевое слово struct. Например, мы создадим структуру типа Coordinates(координаты) и определим для нее функцию, которая позволяет комфортно представлять ее при выводе на экран
Заметим, что в качестве поля структуры может быть в свою очередь структура. Кроме того, из структур можно формировать и массивы. В качестве одного из элементов структуры может быть массив. Кроме того, над структур-ными переменными можно выполнять операции как над едиными объектами (присваивать одной структурной переменной другую, сравнивать их и т.д.), но только в том случае, если структурные переменные однотипны, т.е. описаны на основе одного структурного типа. При сравнении структуры по умолчанию будут считаться равными если равны значения всех их полей.
3 Ход работы
Задание 1 Составить программу, которая проверяет правописание << ча – ща >> (т.е. если в заданном тексте после << ч >> или << щ >> встретится << я >>, то программа должна выдавать сообщение об ошибке).
Для начала составим Алгоритм А:
А1. Вводим текст
А2. Присваиваем массив 1024
А3. for (int i = 0; i < 1024; i++)
А4. Проверяем правильность написания
А5. Если стоит буква ч, щ, Ч, Щ, то за ней проверяем буку, если я, то
А6. Выводим Грамматическая ошибка, После символа под номером
А7. Если а или другая, то
А8. Всё верно
Затем составим блок-схему, изображенную на рисунке 3.1.
Реализация данного алгоритма на языке C# представлена в приложении 1.
Результат работы программы представлен на рисунке 3.2.
Рисунок 3.2 Результат работы программы
Задание 2: Багаж пассажира, характеризуется количеством вещей ( целый тип ) и общим весом вещей (вещественный тип). Дан список из сведений о багаже 10 пассажиров. Число пассажиров, количество вещей которых превосходит среднее число вещей по всему списку
Результат работы программы представлен на рисунке 3.4.
Рисунок 3.4 — Результат работы программы
4 Заключение
В результате выполнения лабораторной работы были получены навыками использования обработки символов и структур в программировании. Отчет оформлен согласно ОС ТУСУР.
5 Литература
Харченко С.С. Основы программирования (учебно-методическое пособие). 2020г.
6 Приложение 1
using System;
namespace ЛАба_5_1
{
class Program
{
static char[] readChars()
{
var text = new char[1024];
for (int i = 0; i < 1024; i++)
{
text[i] = Console.ReadKey().KeyChar;
if (text[i] == 13)
break;
}
Console.WriteLine();
return text;
}
static void Main()
{
Console.WriteLine("Введите текст для проверки:");
var text = readChars();
bool is_wrong = false;
for (int i = 0; i < text.Length - 1 && text[i] != 13; i++)
{
if ((text[i] == 'ч' || text[i] == 'щ' || text[i] == 'Ч' || text[i] == 'Щ') && text[i + 1] == 'я' || text[i + 1] == 'Я')
{
Console.WriteLine("Грамматическая ошибка!");
Console.Write("После символа под номером ");
Console.Write(i + 1);
Console.WriteLine(" должна идти буква а!");
is_wrong = true;
}
}
if (is_wrong == false)
Console.WriteLine("Всё верно!");
Console.ReadKey();
}
}
}
7 Приложение 2
using System;
namespace Лаба_5_2
{
class Program
{
struct baggage
{
public int count;
public float weight;
}
static void Main(string[] args)
{
var baggages = new baggage[10];
float average = 0;
for (int i = 0; i < 10; i++)
{
bool success = true;
Console.Write("Введите кол-во багажа, пассажира с номером: ");
Console.WriteLine(i + 1);
success = Int32.TryParse(Console.ReadLine(), out baggages[i].count);
if (!success)
Console.WriteLine("Ошибка ввод количества багажа!");
Console.Write("Введите общий вес багажа, пассажира с номером: ");
Console.WriteLine(i + 1);
success = float.TryParse(Console.ReadLine(), out baggages[i].weight);
if (!success)
Console.WriteLine("Ошибка ввод веса багажа!");
Console.Write("\n\n");
average += baggages[i].count;
}
average /= 10;
Console.Write("Среднее кол-во багажа: ");
Console.WriteLine(average);
int count = 0;
for (int i = 0; i < 10; i++)
{
if (baggages[i].count > average)
{
count++;
}
}
Console.Write("Число пасажиров превысивших среднее кол-во багажа: ");
Console.WriteLine(count);
Console.ReadKey();
}
}
}