Лабораторная работа асд. Лабораторные работы_по_АСД. Дисциплина Алгоритмы и структуры данных Отчёт по лабораторной работе
Скачать 3.09 Mb.
|
РешениеЗадача 1. Блок схема алгоритма решения задачи представлена на рисунке 1: Рисунок 1 - Блок схема алгоритма решения задачи 1 Программа на C#: using System; namespace laba1_1 { class Program { static void Main(string[] args) { double a = 2; double b = 0.5; Console.WriteLine("Введите x:"); double x = Convert.ToDouble(Console.ReadLine()); double Y = ((x - a) * Math.Atan(a + x) - Math.Pow((Math.Abs(x + a)), 1.0 / 3.0) + x * Math.Log(a + x)); Console.WriteLine("Y=" + Y + "\n"); double F = Math.Sqrt(a * Math.Pow(x, 2) + x) + (a * Math.Exp(-a * x)) + Math.Log(Math.Abs(x) - 3); Console.WriteLine("F=" + F); Console.ReadKey(); } } } Скриншот результата работы программы представлен на рисунке 2. Рисунок 2 - Скриншот результата работы программы задачи 1. Выводы: В процессе выполнения лабораторной работы были освоены правила представления алгоритмов в Единой системе программной документации. Лабораторная работа №2. Алгоритмы и программы с разветвлениями. Элементы управления Radiobutton и CheckBoxВариант 15 Номер зачётной книжки ЗаданиеСоставить блок-схемы алгоритмов решения задач своего варианта (3-х задач), выполнить их реализацию в виде программы на языке программирования и представить скрин экрана с результатом работы программы. Выполнить просчет работы алгоритмов при задании трех различных вариантов исходных данных. Описать возможные ограничения по входным данным. Составить отчет по выполненной лабораторной работе. РешениеЗадача 1. Перераспределить значения переменных X и Y так, чтобы в X оказалось большее из этих значений, а в Y - меньшее. Все используемые идентификаторы представлены в таблице 2. Таблица 2 – Идентификаторы
Блок схема алгоритма решения задачи представлена на рисунке 3: Рисунок 3 - Блок схема алгоритма решения задачи 1 Программа на C#: using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int x = Int32.Parse(textBox1.Text); int y = Int32.Parse(textBox2.Text); if (x < y) { x ^= y; y ^= x; x ^= y; } textBox3.Text = String.Format("x={0}, y={1}", x, y); } } } Скриншот результата работы программы представлен на рисунке 4. Рисунок 4 - Скриншот результата работы программы задачи 1. Задача 2. Подсчитать произведение чисел, значения которых не равны нулю, для последовательности из трех произвольно задаваемых чисел. Все используемые идентификаторы представлены в таблице 3. Таблица 3 – Идентификаторы
Блок схема алгоритма решения задачи представлена на рисунке 5: Рисунок 5 - Блок схема алгоритма решения задачи 2 Программа на C#: using System; namespace ConsoleApp6 { class Program { static void Main(string[] args) { Console.WriteLine("Введите 3 числа"); int x = Convert.ToInt32(Console.ReadLine()); int y = Convert.ToInt32(Console.ReadLine()); int z = Convert.ToInt32(Console.ReadLine()); if ((x * y * z) != 0) { Console.WriteLine("Ответ: " + x * y * z); Console.ReadKey(); } else { Console.WriteLine("В заданных числах есть 0"); Console.ReadKey(); } } } } Скриншот результата работы программы представлен на рисунке 6. Рисунок 6 - Скриншот результата работы программы задачи 2. Задача 3. Создайте тест на тему «Блок-схемы алгоритмов» Все используемые идентификаторы представлены в таблице 4. Таблица 4 – Идентификаторы
Блок схема алгоритма решения задачи представлена на рисунке 7: Программа на C#: using System; using System.Windows.Forms; namespace WindowsFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void checkBox1_CheckedChanged(object sender, EventArgs e) { } private void checkBox7_CheckedChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { bool a, b, c, d, r; if (checkBox1.Checked == false && checkBox2.Checked == true && checkBox3.Checked == false) a = true; else a = false; if (checkBox4.Checked == false && checkBox5.Checked == false && checkBox6.Checked == true) b = true; else b = false; if (checkBox7.Checked == false && checkBox8.Checked == true && checkBox9.Checked == false) c = true; else c = false; if (checkBox10.Checked == true && checkBox11.Checked == false && checkBox12.Checked == false) d = true; else d = false; if (checkBox13.Checked == false && checkBox14.Checked == false && checkBox15.Checked == true) r = true; else r = false; if (a == true || b == true || c == true || d == true || r == true) MessageBox.Show("Тест сдан", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show("Тест не сдан", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } Скриншот результата работы программы представлен на рисунке 8. Рисунок 7 - Скриншот результата работы программы задачи 3. Лабораторная работа №3. Циклические алгоритмы Вариант 15 Номер зачётной книжки Задание 1. Составить блок-схемы алгоритмов решения задач своего варианта (в первых трёх задачах вариант такой же как ЛР2, в четвёртой задаче вариант как в ЛР1) (4-х задач). 2. Выполнить анализ работы алгоритмов при задании различных вариантов исходных данных и описать возможные ограничения по входным данным. 3. Составить отчет по выполненной лабораторной работе. Решение Задача 1. Вычислить функцию Y=f(X) на отрезке [A,B] с шагом H (табл. 2). На каждом шаге выводить на печать значения переменных X и Y (sqrt - функция вычисления квадратного корня).
Все используемые идентификаторы представлены в таблице 5 Таблица 5 – Идентификаторы
Блок схема алгоритма решения задачи представлена на рисунке 9: Рисунок 8 - Блок схема алгоритма решения задачи 1 Программа на C#: using System; namespace ConsoleApp7 { class Program { static void Main(string[] args) { double Y; double a = -1 * Math.PI / 2; double b = Math.PI / 2; double h = Math.PI / 10; while (a < b) { Console.Write("Aргумент: {0}\t", a); Y = Math.Sqrt(Math.Pow((Math.Cos(a) / Math.Sin(a)), 2) + 0.5); Console.OutputEncoding = System.Text.Encoding.Unicode; Console.WriteLine(" Y = {0}", Y); a += h; } Console.ReadKey(); } } } Скриншот результата работы программы представлен на рисунке 10. Рисунок 9 - Скриншот результата работы программы задачи 1. Задача 2. Логической переменной t присвоить значение True или False в зависимости от того, является натуральное число K степенью 3 или нет. Все используемые идентификаторы представлены в таблице 6 Таблица 6 – Идентификаторы
Блок схема алгоритма решения задачи представлена на рисунке 11: Рисунок 10 - Блок схема алгоритма решения задачи 2 Программа на C#: using System; namespace ConsoleApp7 { class Program { static void Main(string[] args) { Boolean t = false; int num; Console.WriteLine("введите число: "); num = int.Parse(Console.ReadLine()); int pow = 0; for (int i = 1; pow < num; i++) { pow = (int)Math.Pow(3, i); if (pow == num) t = true; } Console.WriteLine("T: " + t); Console.ReadKey(); } } } Скриншот результата работы программы представлен на рисунке 12. Рисунок 11 - Скриншот результата работы программы задачи 2. Задача 3. По номеру летнего месяца для текущего года вывести количество дней в этом месяце. Все используемые идентификаторы представлены в таблице 7 Таблица 7 – Идентификаторы
|