diff --git a/ProjectBoat_bae/ProjectBoat_bae/Drawing.cs b/ProjectBoat_bae/ProjectBoat_bae/Drawing.cs index bf68ca6..d440d74 100644 --- a/ProjectBoat_bae/ProjectBoat_bae/Drawing.cs +++ b/ProjectBoat_bae/ProjectBoat_bae/Drawing.cs @@ -23,32 +23,32 @@ namespace ProjectBoat_bae private readonly int _BoatHeight = 60; public bool Init(int speed, double weight, Color bodyColor, Color -additionalColor, bool body, bool wing, bool sportLine, int width, int height) +additionalColor, bool body, + int width, int height) { if (width >= _BoatWidth || height >= _BoatHeight) { _pictureWidth = width; _pictureHeight = height; Boat = new ProjectBoat_bae(); - Boat.Init(speed, weight, bodyColor, additionalColor, - body, wing, sportLine); + Boat.Init(speed,weight, bodyColor, additionalColor,body ); } return true; } // Установка позиции(запоминаем значение) - public void SetPosition(int x, int y, int width, int height) + public void SetPosition(int x, int y) { - if (_pictureWidth <= _BoatWidth || _pictureHeight <= _BoatHeight) + if (x < 0 || x + _BoatWidth > _pictureWidth) { - _pictureWidth = null; - _pictureHeight = null; - return; + x = 0; + } + if (y < 0 || y + _BoatHeight > _pictureHeight) + { + y = 0; } _startPosX = x; _startPosY = y; - _pictureWidth = width; - _pictureHeight = height; } // Изменение направления перемещения diff --git a/ProjectBoat_bae/ProjectBoat_bae/Form1.cs b/ProjectBoat_bae/ProjectBoat_bae/Form1.cs index 07da133..724c113 100644 --- a/ProjectBoat_bae/ProjectBoat_bae/Form1.cs +++ b/ProjectBoat_bae/ProjectBoat_bae/Form1.cs @@ -55,12 +55,12 @@ namespace ProjectBoat_bae { Random random = new(); _drawningBoat = new Drawing(); - _drawningBoat.Init(random.Next(100, 300), random.Next(1000, 3000), + _drawningBoat.Init(random.Next(100, 300), random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), - Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), - Convert.ToBoolean(random.Next(0, 2)), - Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), pictureBox1.Width, pictureBox1.Height); - _drawningBoat.SetPosition(random.Next(10, 10), random.Next(10, 10), pictureBox1.Width, pictureBox1.Height); + //Convert.ToBoolean(random.Next(0, 2)), + Convert.ToBoolean(random.Next(0, 2)), pictureBox1.Width, pictureBox1.Height); + _drawningBoat.SetPosition(random.Next(10, 100), random.Next(10, 100)); Draw(); } diff --git a/ProjectBoat_bae/ProjectBoat_bae/ProjectBoat_bae.cs b/ProjectBoat_bae/ProjectBoat_bae/ProjectBoat_bae.cs index 03946bd..20e9c7f 100644 --- a/ProjectBoat_bae/ProjectBoat_bae/ProjectBoat_bae.cs +++ b/ProjectBoat_bae/ProjectBoat_bae/ProjectBoat_bae.cs @@ -21,33 +21,17 @@ namespace ProjectBoat_bae public bool body { get; private set; } - public bool Wing { get; private set; } - - public bool SportLine { get; private set; } - public double Step => (double)Speed * 100 / Weight; - /// - /// Инициализация полей объекта-класса - /// - /// + + + Exe + net6.0 + enable + enable + + + diff --git a/evm_laba3/evm_laba3.sln b/evm_laba3/evm_laba3.sln new file mode 100644 index 0000000..561fc91 --- /dev/null +++ b/evm_laba3/evm_laba3.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34031.279 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "evm_laba3", "evm_laba3\evm_laba3.csproj", "{BE1E2078-C452-4E42-BBBB-3AC3141E9744}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BE1E2078-C452-4E42-BBBB-3AC3141E9744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE1E2078-C452-4E42-BBBB-3AC3141E9744}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE1E2078-C452-4E42-BBBB-3AC3141E9744}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE1E2078-C452-4E42-BBBB-3AC3141E9744}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5A26F9BF-589C-4D50-995E-D6FA981231E6} + EndGlobalSection +EndGlobal diff --git a/evm_laba3/evm_laba3/Program.cs b/evm_laba3/evm_laba3/Program.cs new file mode 100644 index 0000000..43e0c1f --- /dev/null +++ b/evm_laba3/evm_laba3/Program.cs @@ -0,0 +1,296 @@ +//using System; + +//namespace NumberConverter +//{ +// class Program +// { +// static void Main(string[] args) +// { +// try +// { +// Console.WriteLine("Введите исходную систему счисления (2-16):"); +// int sourceBase = int.Parse(Console.ReadLine()); + +// Console.WriteLine("Введите конечную систему счисления (2-16):"); +// int targetBase = int.Parse(Console.ReadLine()); + +// Console.WriteLine("Введите число в исходной системе счисления:"); +// string number = Console.ReadLine(); + +// int decimalNumber = ConvertToDecimal(number, sourceBase); + +// string targetNumber = ConvertFromDecimal(decimalNumber, targetBase); + +// Console.WriteLine("Результат: " + targetNumber); + +// //string result = Convert.ToString(decimalNumber, targetBase); + +// //result = result.PadLeft(8, '0'); // дополняем до 8 символов +// // //Console.WriteLine("Результат ПК: " + result); +// //Console.WriteLine("Результат ПК: " + result); + +// } +// catch (FormatException) +// { +// Console.WriteLine("Ошибка: введенное значение имеет неверный формат."); +// } +// catch (ArgumentOutOfRangeException) +// { +// Console.WriteLine("Ошибка: значение системы счисления должно быть от 2 до 16."); +// } +// } + +// //в 10 +// static int ConvertToDecimal(string number, int sourceBase) //число в 10 +// { +// bool isNegative = false; +// if (number.StartsWith("-")) +// { +// isNegative = true; +// number = number.Substring(1);//извлекает подстроку +// } + +// //с конца числа каждая цифра умножается на на степень систем, а потом суммируются значения +// int decimalNumber = 0; +// int power = 0; +// for (int i = number.Length - 1; i >= 0; i--) +// { +// int digitValue; +// if (char.IsDigit(number[i])) +// { +// digitValue = number[i] - '0'; +// } +// else +// { +// digitValue = number[i] - 'A' + 10; +// } + +// //Math.Pow - в степень +// decimalNumber += digitValue * (int)Math.Pow(sourceBase, power); +// power++; +// } + +// //конвертирует в пк +// static string ConvertTwosComplement(int num) +// { +// string binary = Convert.ToString(num, 2); +// char[] binaryArr = binary.PadLeft(8, '0').ToCharArray(); +// for (int i = 0; i < binaryArr.Length; i++) +// { +// binaryArr[i] = binaryArr[i] == '0' ? '1' : '0'; +// } + +// int twosComplement = Convert.ToInt32(new string(binaryArr), 2) + 1; +// return Convert.ToString(twosComplement, 2).PadLeft(8, '0'); +// } + +// return isNegative ? -decimalNumber : decimalNumber; +// } + +// //из 10 +// static string ConvertFromDecimal(int decimalNumber, int targetBase)//10 d lheue. +// { +// bool isNegative = false; +// if (decimalNumber < 0) +// { +// isNegative = true; +// decimalNumber = -decimalNumber; +// } + +// //остаток от деления записывается как цифра +// string targetNumber = ""; +// while (decimalNumber != 0) +// { +// int remainder = decimalNumber % targetBase; +// char digit; +// if (remainder < 10) +// { +// digit = (char)(remainder + '0'); +// } +// else +// { +// digit = (char)(remainder - 10 + 'A'); +// } +// targetNumber = digit + targetNumber; +// decimalNumber /= targetBase; +// } + +// if (isNegative) +// { +// return "-" + targetNumber; +// } +// else +// { +// return targetNumber; +// } +// } +// } +//} +//using System; + +//public class NumberConverter +//{ +// public static void Main(string[] args) +// { +// Console.Write("Введите число: "); +// string number = Console.ReadLine(); + +// Console.Write("Введите первоначальную систему: (2 - 16): "); +// int origBase = Int32.Parse(Console.ReadLine()); + +// Console.Write("Введите конечную систему: (2 - 16): "); +// int finalBase = Int32.Parse(Console.ReadLine()); + +// bool isNegative = number.StartsWith('-');//убирает минус чтобы конвертировать +// if (isNegative) number = number.Substring(1); + +// //преоразование в 10 +// int decimalNum = Convert.ToInt32(number, origBase); + +// if (isNegative && finalBase == 2) +// { +// Console.WriteLine("С минусом -" + Convert.ToString(decimalNum, finalBase)); +// Console.WriteLine("ПК: " + ConvertTwosComplement(decimalNum)); +// } +// else +// { +// string finalNum = Convert.ToString(decimalNum, finalBase); +// if (isNegative) finalNum = "-" + finalNum; +// Console.WriteLine($"{finalBase}-число: {finalNum.ToUpper()}"); +// } +// } + +// //конвертирует в пк +// private static string ConvertTwosComplement(int num) +// { +// string binary = Convert.ToString(num, 2); +// char[] binaryArr = binary.PadLeft(8, '0').ToCharArray(); +// for (int i = 0; i < binaryArr.Length; i++) +// { +// binaryArr[i] = binaryArr[i] == '0' ? '1' : '0'; +// } + +// int twosComplement = Convert.ToInt32(new string(binaryArr), 2) + 1; +// return Convert.ToString(twosComplement, 2).PadLeft(8, '0'); +// } +//} + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static System.Net.Mime.MediaTypeNames; + +namespace AVM_3_laba +{ + internal class Program + { + static void Main(string[] args) + { + Console.Write("Введите исходную систему счисления (2-16): "); + int input = Convert.ToInt32(Console.ReadLine()); + + if ((input > 16) || (input < 2)) + { + Console.WriteLine("Введите сс от 2 до 16!"); + return; + } + + Console.Write("Введите конечную систему счисления (2-16): "); + int output = Convert.ToInt32(Console.ReadLine()); + + if ((output > 16) || (output < 2)) + { + Console.WriteLine("Введите сс от 2 до 16!"); + return; + } + + Console.Write("Введите число в исходной системе счисления: "); + string number = Console.ReadLine(); + + bool minus = false; + if (number[0] == '-') + { + number = number.Substring(1); + minus = true; + } + + int decimalNumber = ConvertToDecimal(number, input); + int result = ConvertToOutput(decimalNumber, output); + + if (minus) { result = -result; }; + + Console.WriteLine(result); + + if (minus && output == 2) + { + Console.WriteLine(directСode(result * -1)); + } + } + + static int ConvertToDecimal(string number, int input) + { + string numberString = number.ToString(); + int decimalNumber = 0; + int power = 0; // степень числа + string digits = "0123456789ABCDEF"; + + for (int i = numberString.Length - 1; i >= 0; i--) + { + char digit = numberString[i]; // берем текущую цифру + + // Проверка на недопустимые символы + if (!digits.Contains(digit)) + { + Console.WriteLine("Неверный формат числа!"); + Environment.Exit(0); + } + + int value = digits.IndexOf(digit); + + // Проверка на недопустимую цифру для выбранной системы счисления + if (value >= input) + { + Console.WriteLine("Неверный формат числа!"); + Environment.Exit(0); + } + decimalNumber += value * (int)Math.Pow(input, power++); + } + return decimalNumber; + } + + static int ConvertToOutput(int number, int output) + { + string digits = "0123456789ABCDEF"; + string result = ""; + + while (number > 0) + { + int remainder = number % output; + result = digits[remainder] + result; + number /= output; + } + + return Convert.ToInt32(result); + } + + static string directСode(int result) + { + string resultString = result.ToString(); + int discharge = 8; + int countNumber = resultString.Length; + + while (countNumber >= discharge) + { + discharge *= 2; + } + + int numberOfZeros = discharge - countNumber - 1; + + string finalResultString = "1" + string.Concat(Enumerable.Repeat("0", numberOfZeros)) + resultString; + + return finalResultString; + } + } +} \ No newline at end of file diff --git a/evm_laba3/evm_laba3/evm_laba3.csproj b/evm_laba3/evm_laba3/evm_laba3.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/evm_laba3/evm_laba3/evm_laba3.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + +