Алгоритмические языки и программирование. Отчет по контрольным работам Вариант 4 Выполнил студент гр з16ист храмченко В. В. Преподаватель
Скачать 64.8 Kb.
|
Министерство образования и науки РФ Брянский государственный технический университет Кафедра: «Компьютерные технологии и системы» Дисциплина: «Алгоритмические языки и программирование» Отчет по контрольным работам Вариант № 4 Выполнил студент гр: З-16ИСТ Храмченко В.В. Преподаватель: Леонов Ю.А. Брянск 2016 Контрольнаяработа № 1 Тема работы: Позиционная система счисления. Цель работы: целью работы является ознакомление с видами систем счисления (СС) и приобретение практических навыков перевода из одной СС в другую, а также овладение элементарными арифметическими операциями над числами. Формулировка задания: Дано: 1 число=3010; 2 число=2111; А=5; В=8; Перевести заданное число из (СС) «А» в «В». Выполнить сложение и вычитание двух представленных чисел. 1.Решение Контрольнаяработа № 2 Тема работы: Изучение условных и циклических конструкций. Цель работы: целью работы является приобретение практических навыков при построении ветвящихся и повторяющихся процессов с использованием условных и циклических конструкций на примере табулирования функции на заданном числовом отрезке. Формулировка задания: Необходимо описать алгоритм поставленной задачи в виде блок-схемы и написать программу на языке C#, которая будет реализовывать табулирование функции для заданной системы уравнений на числовом промежутке [a, b] с шагом p. Данные должны выводиться в табличной форме, где каждому значению аргумента соответствует подсчитанное значение функции. Решение using System; namespace ConsoleApplication23 { class Program { static void Main(string[] args) { Console.Write("Начало промежутка: "); // Выводит тест с переносом строки на новую int a = Convert.ToInt16(Console.ReadLine()); // Присваиваем целочисленной букве "a" с какого числа начинать цикл Console.Write("Конец промежутка: "); int b = Convert.ToInt16(Console.ReadLine()); Console.Write("Шаг промежутка: "); int p = Convert.ToInt16(Console.ReadLine()); // Шаг изменени переменной, если int то 1,2,3,4..., если поставить float то 0,1 ...(Он может потребовать изменить шаг на более малый) double s = 0; // Временная переменная, в нее я записываю ответ на одном шаге цикла, потом она переприсваивается for (int i = a; i < b; i += p) // Задаю цикл с счетчиком в диапазоне [a, b] с шагом p { if (i < 1) // Условие, если x < 0 s = Math.Exp(3 * i); else // Иначе s = Math.Acos(1 - 2 * i); Console.WriteLine("{0}: {1}", i, s); // Выводим {0} - это место куда засунуть i, {1} - s и т.д. } Console.ReadKey(); // Нужно чтобы не закрывалась консоль после завершения программы } } } Контрольная работа № 3 Тема работы: Итерационные методы решения задач. Цель работы: Целью работы является ознакомление с итерационными методами решения задач, на примере вычисления суммы сходящегося ряда и нахождение корней нелинейных уравнений. Формулировка задания: Написать две программы на языке C# выполняющие два задания: 1)вычисление суммы сходящегося ряда 2)нахождение корней уравнения методом половинного деления. 1.Решение namespace ConsoleApp1 { class Program { static void Main(string[] args) { const float e = 0.0001f; float i = 1, trem, sum = 0; Console.Write("Введите x - "); int x = Convert.ToInt32(Console.ReadLine()); do { trem = Convert.ToSingle((9 + Math.Pow(x, i)) / Factorial(i)); sum += trem; i++; } while (trem > e); Console.WriteLine("Сумма заданного числового ряда = {0}", sum); Console.WriteLine("Количество членов ряда = {0}", i); Console.Read(); } public static double Factorial(float n) // Функция вывода факториала { double res = 1; for (int i = 2; i <= n; i++) { res *= i; } return res; } } } 2.Решение using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { const float e = 0.0001f; float x0, x1, x2 = 0, fx0, fx2; Console.Write("Введите начало: "); x0 = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите конец числового промежутка: "); x1 = Convert.ToInt32(Console.ReadLine()); while(Math.Abs(x1 - x0) > e) { x2 = (x0 + x1) / 2; fx0 = Convert.ToSingle(Math.Log10(x0) - 2 * Math.Cos(x0)); fx2 = Convert.ToSingle(Math.Log10(x2) - 2 * Math.Cos(x2)); if (fx0 * fx2 < 0) x1 = x2; else x0 = x2; } Console.WriteLine("Значение корня уравнения на заданном числовом промежутке = {0}", x2); Console.Read(); } } } Контрольнаяработа № 4 Тема работы: Работа с массивами. Цель работы: Целью работы является изучение теоретических основ и овладение практическими навыками работы с массивами. Формулировка задания: В одномерном массиве заменить отрицательные элементы на стоящие перед ними. Если первый элемент отрицательный, заменить на 0. Дан массив размера n × n. Значение элементов массива заполняются случайными числами. Найти сумму минимальных и максимальных элементов главной и побочной диагонали. 1.Решение namespace массив { class Program { static void Main(string[] args) { Console.Write("Введите размерность массива: "); int size_mass = Convert.ToInt32(Console.ReadLine()); int[] mass = new int[size_mass]; Random rand = new Random(); // Создаю объект класса for(int i = 0; i < size_mass; i++) { mass[i] = rand.Next(-100, 100); // Использую метод из класса, а иименно рандом, от -100 до 100, а в общем я заполняю массив случайными элементами Console.Write("{0,4}", mass[i]); } Console.WriteLine(); for(int i = 0; i < mass.Length; i++) { if (i == 0) { if (mass[i] < 0) { mass[i] = 0; } } else if(mass[i] < 0) mass[i] = mass[i - 1]; } for(int i = 0; i < mass.Length; i++) Console.Write("{0,4}", mass[i]); Console.ReadLine(); } } } } 2.Решение namespace массив { class Program { static void Main(string[] args) { Console.Write("Введите размерность массива: "); int size_mass = Convert.ToInt32(Console.ReadLine()); int[,] mass = new int[size_mass,size_mass]; // Задаем массив, в данном случае - двумерный, типо матрицы Random rand = new Random(); // Создаю объект класса for (int i = 0; i < size_mass; i++) { for (int j = 0; j < size_mass; j++) { mass[i, j] = rand.Next(-10, 10); // Использую метод из класса, а иименно рандом, от -100 до 100, а в общем я заполняю массив случайными элементами Console.Write("{0,3}", mass[i, j]); } Console.WriteLine(); } Console.WriteLine(); int main_tmp_min = mass[0, 0], main_tmp_max = mass[0, 0], side_tmp_min = mass[0, size_mass - 1], side_tmp_max = mass[0, size_mass - 1], summ_main_min = 0, summ_side_max = 0; for (int i = 0, j = size_mass - 1; i < size_mass; i++, j--) { if (mass[i, i] > main_tmp_max) main_tmp_max = mass[i, i]; else if (mass[i, i] < main_tmp_min) main_tmp_min = mass[i, i]; if (mass[i, j] > side_tmp_max) side_tmp_max = mass[i, j]; else if (mass[i, j] < side_tmp_min) side_tmp_min = mass[i, j]; } summ_main_min = main_tmp_min + side_tmp_min; summ_side_max = main_tmp_max + side_tmp_max; Console.WriteLine("Главная диагональ: min = {0,4}, max {1,4}", main_tmp_min, main_tmp_max); Console.WriteLine("Побочная диагональ: min = {0,4}, max {1,4}", side_tmp_min, side_tmp_max); Console.WriteLine("Сумма на главной и побочной диагоналях: min ({2}+{3}) = {0,3}, max({4}+{5}) = {1,3}", summ_main_min, summ_side_max, main_tmp_min, side_tmp_min, main_tmp_max, side_tmp_max); Console.ReadLine(); } } } Контрольнаяработа № 5 Тема работы: Методы сортировки данных. Цель работы: Целью работы является изучение методов сортировки и приобретение практических навыков в программировании данных методов. Формулировка задания: Заполнение массива прописными латинскими, метод обмена выбором по убыванию. Решение namespace Сортировка { class Program { static void Main(string[] args) { char [] text; // Создаю массив Console.Write("Введите строку, содержащую только латинские символы: "); text = Console.ReadLine().ToCharArray(); //Заполняю массив значениями for(int i = 0; i < text.Length; i++) { for(int j = 0; j < text.Length - 1 - i; j++) { if(text[j] < text[j + 1]) { char tmp = text[j]; text[j] = text[j + 1]; text[j + 1] = tmp; } } } Console.WriteLine(text); Console.ReadLine(); } } } |