
Болтушкин Л.С., 712-2, отчет
.pdf
{
static void Main(string[] args)
{
Console.WriteLine("Введите значение x: "); int x = int.Parse(Console.ReadLine());
Console.WriteLine("Введите значение y: "); int y = int.Parse(Console.ReadLine());
int nod = NOD(x, y);
Console.WriteLine($"Наибольший общий делитель для {x} и {y} = {nod}");
}
static int NOD(int x, int y)
{
if (x == 0) return y;
if (y == 0) return x;
if (x == y) return x;
if (x > y)
return NOD(x - y, y); else
return NOD(x – y, x);
}
}
Результат работы программы представлен ниже на рисунке 3.4
Рисунок 3.4 – Результат работы программы задания 3.2
21

Лабораторная работа №4
Вариант 5
Задание 4.1. Составить программу, которая определит, является ли заданное слово перевертышем (например, «кок», «шалаш» являются).
Блок-схема алгоритма представлена на рисунке 4.1.
Рисунок 4.1 – Блок схема задания 4.1
Листинг кода задания 4.1:
using System;
class Program
{
static void Main(string[] args)
{
Console.Write("Введите слово: "); string word = Console.ReadLine();
bool isPalindrome = IsPalindrome(word); //палидром - переворачивает слово и должно получиться исходником
if (isPalindrome)
{
Console.WriteLine("Слово является перевертышем");
}
else
{
Console.WriteLine("Слово не является перевертышем");
}
Console.ReadKey();
}
static bool IsPalindrome(string word)
{
int length = word.Length;
for (int i = 0; i < length / 2; i++) // цикл проверки, который делит длину
пополам
22

{
if (word[i] != word[length - 1 - i])
{
return false;
}
}
return true;
}
}
Результат работы программы представлен ниже на рисунке 4.2.
Рисунок 4.2 – Результат работы программы задания 4.1
Задание 4.2. Разработать программу – клавиатурный тренажер. В ходе работы программы должны генерироваться символы, которые необходимо вводить пользователю, количество правильно введенных символов должно подсчитываться, при вводе неверного символа, счетчик правильно введенных символов должен обнуляться, по завершению работы тренажера результат верно введенных символов должен выводиться на экран. Выход из режима тренажера должен осуществляться по нажатию клавиши «Esc». При вводе неверного символа необходимо выдавать звуковое сопровождение
(системный звук). При запуске приложения должен предоставляться выбор набор символов какого языка необходимо тренировать: русский или английский.
Блок-схема алгоритма представлена на рисунке 4.3.
23

Рисунок 4.3 – Блок схема задания 4.2
Листинг кода задания 4.2:
using System; namespace Studing
{
class Program
{
static void Main(string[] args)
{
int count = 0;
static void Language(char[] alf, int count)
{
char[] alfr = alf;
Random rand = new Random();
int index = rand.Next(0, alfr.Length - 1); Console.WriteLine($"Введите {alfr[index]}"); char letter = Console.ReadKey().KeyChar;
if (letter == alfr[index])
{
count++;
Console.WriteLine($" - {count}"); Language(alf, count);
}
else if ((int)letter == (int)ConsoleKey.Escape)
{
Console.WriteLine(); Console.Write("Выход из программы");
24

}
else if (letter != alfr[index])
{
Console.WriteLine();
Console.Write(" Неверно! Набрано баллов: " + count + '\a'); Console.WriteLine();
count = 0; Language(alf, count);
}
}
Console.WriteLine("Выберите на какой раскладке будет язык: 1 - русская, 2 - английская");
int choise = int.Parse(Console.ReadLine()); if (choise == 1)
Language(@"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя".ToCharA rray(), count);
else if (choise == 2)
Language(@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray(), count);
else Console.Write("Выберите язык!");
}
}
}
Результат работы программы представлен ниже на рисунке 4.4.
Рисунок 4.4 – Результат работы программы задания 4.2
25

Лабораторная работа №5
Вариант 5
Задание 5.1. Записать выходной файл, разделив все нечетные по абсолютной величине числа на среднее арифметическое.
Блок-схема алгоритма представлена на рисунке 5.1.
Рисунок 5.1 – Блок схема задания 5.1
Листинг кода задания 5.1:
using System; using System.IO; using System.Linq;
namespace TextFileTasks
{
class Program
{
static void Main(string[] args)
{
// создаем текстовый файл с 20 случайными числами
Random random = new Random();
using (StreamWriter writer = new StreamWriter("laba_5.txt"))
{
for (int i = 0; i < 20; i++)
{
writer.WriteLine(random.Next(-100, 101));
}
}
26

//читаем входной файл и записываем выходной файл double sum = 0;
int count = 0;
using (StreamReader reader = new StreamReader("laba_5.txt")) using (StreamWriter writer = new StreamWriter("laba_5_new.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
int number = int.Parse(line); if (Math.Abs(number) % 2 != 0)
{
sum += number; count++;
writer.WriteLine(number);
}
else
{
writer.WriteLine(line);
}
}
}
//дописываем в конец выходного файла среднее арифметическое double average = sum / count;
using (StreamWriter writer = new StreamWriter("laba_5_new.txt", true))
{
writer.WriteLine($"Среднее арифметическое: {average}");
}
Console.WriteLine("Готово. Нажмите любую клавишу для выхода."); Console.ReadKey();
}
}
}
// Путь к файлу: Пользователи -> emotb -> source -> repos -> Laba 3 -> Laba 3 -> bin - > Debug -> net 6.0
Результат работы программы представлен ниже на рисунках 5.2 и 5.3
Рисунок 5.2 – Результат работы программы задания 5.1
27

Рисунок 5.3 – Исходный файл и создание нового, благодаря программе
Задание 5.2. Посчитать количество запятых в тексте.
Блок-схема алгоритма представлена на рисунке 5.4.
Рисунок 5.4 – Блок схема задания 5.2
Листинг кода задания 5.2:
using System; using System.IO;
class Program
{
static void Main()
{
try
{
string text = File.ReadAllText("laba_5_2.txt"); // Загрузка текстового
файла
28

int count = text.Split(',').Length - 1; // Подсчет количества запятых в
файле
Console.WriteLine("Количество запятых в файле: " + count);
}
catch (FileNotFoundException)
{
Console.WriteLine("Файл не найден");
}
catch (Exception e)
{
Console.WriteLine("Ошибка: " + e.Message);
}
}
}
Результат работы программы представлен ниже на рисунке 5.5
Рисунок 5.5 – Результат работы программы задания 5.2
29

Лабораторная работа №6
Вариант 2
Задание 6.1. Создать класс vector3D, задаваемый тройкой координат.
Обязательно должны быть реализованы: сложение и вычитание векторов,
скалярное произведение векторов, умножение на скаляр, сравнение векторов,
вычисление длины вектора, сравнение длины векторов.
Блок-схема алгоритма представлена на рисунке 6.1.
Рисунок 6.1 – Блок схема задания 6.1
Листинг кода задания 6.1:
using System; namespace Vector3D
{
public interface IVector
30