//Ронжин Л. //2.Реализуйте задачу 1 в виде статического класса StaticClass; // а) Класс должен содержать статический метод, который принимает на вход массив и решает задачу 1; // б) *Добавьте статический метод для считывания массива из текстового файла. //Метод должен возвращать массив целых чисел; // в)**Добавьте обработку ситуации отсутствия файла на диске. static void Main(string[] args) { int n = 20; int x = 10000; int count; int[] arr = StaticClass.Add(n, x); MyMetods.Print($"Массив из {n} чисел от {-x} до {x}"); StaticClass.PrintArray(arr); count = StaticClass.CountPairs(arr); Console.WriteLine($"Количество пар, в которых 2 элемента подряд делятся на 3, равно - {count}"); Console.WriteLine("Запись в файл и получение маччива из него"); // пункт б и в. StaticClass.SaveToFile("temp.txt", n, arr); StaticClass.PrintArray(StaticClass.AddFromFile("temp.txt")); Console.WriteLine("Чтение из несуществующего файла"); try { StaticClass.PrintArray(StaticClass.AddFromFile("temp1.txt")); } catch { Console.WriteLine("Файл не найден."); } MyMetods.Pause(); }
//Ронжин Л. //3.*Описать класс дробей — рациональных чисел, являющихся отношением двух целых чисел. //Предусмотреть методы сложения, вычитания, умножения и деления дробей. //Написать программу, демонстрирующую все разработанные элементы класса. //* Добавить свойства типа int для доступа к числителю и знаменателю; //* Добавить свойство типа double только на чтение, чтобы получить десятичную дробь числа; //** Добавить проверку, чтобы знаменатель не равнялся 0. Выбрасывать исключение ArgumentException("Знаменатель не может быть равен 0"); //*** Добавить упрощение дробей. static void Main(string[] args) { string mes1 = "Введите числитель 1й дроби"; string mes2 = "Введите знаменатель 1й дроби"; Ratio ratio1 = new Ratio(MyMetods.ReadInt(mes1), MyMetods.ReadInt(mes2)); mes1 = "Введите числитель 2й дроби"; mes2 = "Введите знаменатель 2й дроби"; Ratio ratio2 = new Ratio(); ratio2.M = MyMetods.ReadInt(mes1); ratio2.N = MyMetods.ReadInt(mes2); MyMetods.Print($"У Вас есть 2 дроби:{ratio1} и {ratio2}."); MyMetods.Print($"В десятичной форме данные дроби имеют вид: {ratio1.Des} и {ratio2.Des}."); Ratio rez; rez = Ratio.Simplification(Ratio.Sum(ratio1, ratio2)); Console.WriteLine($"{ratio1} + {ratio2} = {rez}"); rez = Ratio.Simplification(Ratio.Minus(ratio1, ratio2)); Console.WriteLine($"{ratio1} - {ratio2} = {rez}"); rez = Ratio.Simplification(Ratio.Multi(ratio1, ratio2)); Console.WriteLine($"{ratio1} * {ratio2} = {rez}"); rez = Ratio.Simplification(Ratio.Div(ratio1, ratio2)); Console.WriteLine($"{ratio1} / {ratio2} = {rez}"); MyMetods.Pause(); }
static void Main(string[] args) { /* 1. Написать программу «Анкета». Последовательно задаются вопросы (имя, фамилия, возраст, * рост, вес). В результате вся информация выводится в одну строчку: * а) используя склеивание; * б) используя форматированный вывод; * в) используя вывод со знаком $. */ #region //MyMetods cons = new MyMetods(); MyMetods.Print("Укажите Ваше имя."); string name = Console.ReadLine(); MyMetods.Print("Укажите Вашу фамилию."); string surName = Console.ReadLine(); MyMetods.Print("Укажите Ваш возраст."); uint age = MyMetods.ReadUint(); MyMetods.Print("Укажите Ваш вес в килограммах."); double weight = MyMetods.ReadDouble(); MyMetods.Print("Укажите Ваш рост в метрах."); double growth = MyMetods.ReadDouble(); //Вариант а Console.WriteLine("Вариант а.\nИмя: " + name + " Фамилия: " + surName + " Возраст: " + age + ", рост: " + growth + "м, вес: " + weight + "кг."); //Вариант б Console.WriteLine("Вариант б.\nИмя: {0} Фамилия: {1} Возраст: {2}, рост: {3}м, вес: {4}кг.", name, surName, age, growth, weight); //Вариант в Console.WriteLine($"Вариант в.\nИмя: {name} Фамилия: {surName} Возраст: {age}, рост: {growth}м, вес: {weight}кг."); MyMetods.Pause(); #endregion }
//Ронжин Л. //1. Дан целочисленный массив из 20 элементов. //Элементы массива могут принимать целые значения от –10 000 до 10 000 включительно. //Заполнить случайными числами. //Написать программу, позволяющую найти и вывести количество пар элементов массива, //в которых только одно число делится на 3. В данной задаче под парой подразумевается //два подряд идущих элемента массива.Например, для массива из пяти элементов: 6; 2; 9; –3; 6 ответ — 2. //Несовсем понял, что требуется в данной задаче, написано сначало "кол-во пар, в которых только одно число делится на 3", //а далее описание пары где это "2 подряд элемента делящихся на 3". Сдела как по втрому варианту. static void Main(string[] args) { int n = 20; int[] arr = new int[n]; int x = 10000; int count = 0; Random rand = new Random(); MyMetods.Print($"Массив из {n} чисел от {-x} до {x}"); for (int i = 0; i < arr.Length; i++) { arr[i] = Convert.ToInt32(x * (rand.NextDouble() * 2 - 1)); Console.WriteLine($"{i} - {arr[i]}"); } Console.WriteLine(); //for (int i = 0; i < arr.Length; i++) //{ // Console.WriteLine($"{i} - {arr[i]%3}"); //} for (int i = 1; i < arr.Length; i++) { if (arr[i - 1] % 3 == 0 && arr[i] % 3 == 0) { count++; } //Console.WriteLine($"{i} - {arr[i]}"); } Console.WriteLine($"Количество пар, в которых 2 элемента подряд делятся на 3, равно - {count}"); MyMetods.Pause(); }
//2. Написать метод подсчета количества цифр числа. static void Main(string[] args) { MyMetods.Print("Введите целое положительное число."); long n = MyMetods.ReadLong(); Console.WriteLine($"Количкество чисел в числе {n} - {MyMetods.CountNumber(n)}."); MyMetods.Pause(); }
/*4. Реализовать метод проверки логина и пароля. * На вход метода подается логин и пароль. * На выходе истина, если прошел авторизацию, и ложь, если не прошел (Логин: root, Password: GeekBrains). * Используя метод проверки логина и пароля, написать программу: пользователь вводит логин и пароль, * программа пропускает его дальше или не пропускает. С помощью цикла do while ограничить ввод пароля тремя попытками.*/ static void Main(string[] args) { bool Autorization(string userLogin, string userPassword) { string login = "******"; string password = "******"; if (userLogin.ToLower() == login && userPassword == password) { return(true); } else { return(false); } } //string login = "******"; //string password = "******"; int count = 1; // 1 т.к. использован цикл do while int tryCount = 3; do { MyMetods.Print("Введите логин."); string userLogin = Console.ReadLine(); MyMetods.Print("Введите пароль."); string userPassword = Console.ReadLine(); if (Autorization(userLogin, userPassword)) { MyMetods.Print("Вы вошли в систему."); //count = trycount; break; } else { if (count == tryCount) { MyMetods.Print("Вы ввели неверный логин или пароль.\nВсе попытки использованы.\n"); } else { string str; if (tryCount - count == 2) { str = "ки"; } else { str = "ка"; } MyMetods.Print($"Вы ввели неверный логин или пароль.\nПопробуйте еще раз. У вас осталось {tryCount - count} попыт{str}.\n"); } } } while (count++ < tryCount); MyMetods.Pause(); }
static void Main(string[] args) { MyMetods.Print("Введите первое число."); int a = MyMetods.ReadInt(); MyMetods.Print("Введите второе число."); int b = MyMetods.ReadInt(); Console.WriteLine($"От a до b: {MyMetods.RecPrint(a, b)}"); Console.WriteLine($"От a до b(вар 2): {MyMetods.RecPrintV2(a, b)}"); Console.WriteLine($"Сумма от a до b: {MyMetods.RecSum(a, b)}"); Console.WriteLine($"Сумма от a до b(вар 2): {MyMetods.RecSumV2(a, b)}"); MyMetods.Pause(); }
static void Main(string[] args) { /*2.Ввести вес и рост человека. Рассчитать и вывести индекс массы тела(ИМТ) по формуле * I = m / (h * h); где m — масса тела в килограммах, h — рост в метрах.*/ #region MyMetods.Print("Укажите Ваш вес в килограммах."); double weight = MyMetods.ReadDouble(); MyMetods.Print("Укажите Ваш рост в метрах."); double growth = MyMetods.ReadDouble(); double indexBodyMass = weight / (Math.Pow(growth, 2)); Console.WriteLine($"Ваш индекс массы тела (ИМТ), при росте {growth} и весе {weight}, составляет: {indexBodyMass}."); MyMetods.Pause(); #endregion }
//1. Написать метод, возвращающий минимальное из трёх чисел. static void Main(string[] args) { MyMetods.Print("Введите первое число."); double a = MyMetods.ReadDouble(); MyMetods.Print("Введите второе число."); double b = MyMetods.ReadDouble(); MyMetods.Print("Введите третье число."); double c = MyMetods.ReadDouble(); Console.WriteLine($"Максимальное число из {a}, {b} и {c} - {MyMetods.MaxNumber(a, b, c)}."); Console.WriteLine($"Минимальное число из {a}, {b} и {c} - {MyMetods.MinNumber(a, b, c)}."); MyMetods.Pause(); }
static void Main(string[] args) { #region double defIMB = 18.5; //верхний придел ИМТ при дефиците double normIMB = 25; //верхний придел ИМТ при норме double excIMB = 30; // верхний придел ИМТ при избыт. массе тела double obesity1IMB = 35; //верхний придел ИМТ при ожирении 1ст double obesity2IMB = 40; //верхний придел ИМТ при ожирении 2ст, все что выше ожирение 3ст MyMetods.Print("Укажите Ваш вес в килограммах."); double weight = MyMetods.ReadDouble(); MyMetods.Print("Укажите Ваш рост в метрах."); double growth = MyMetods.ReadDouble(); double indexBodyMass = weight / (Math.Pow(growth, 2)); if (indexBodyMass < defIMB) { MyMetods.Print("У Вас дефицит массы тела."); ChangeMass(normIMB, defIMB, weight, growth); } else if (indexBodyMass >= defIMB && indexBodyMass < normIMB) { MyMetods.Print("У Вас нормальная масса тела."); } else if (indexBodyMass >= normIMB && indexBodyMass < excIMB) { MyMetods.Print("У Вас избыточная масса тела."); ChangeMass(normIMB, defIMB, weight, growth); } else if (indexBodyMass >= excIMB && indexBodyMass < obesity1IMB) { MyMetods.Print("У Вас ожирение | степени."); ChangeMass(normIMB, defIMB, weight, growth); } else if (indexBodyMass >= obesity1IMB && indexBodyMass < obesity2IMB) { MyMetods.Print("У Вас ожирение || степени."); ChangeMass(normIMB, defIMB, weight, growth); } else { MyMetods.Print("У Вас ожирение ||| степени."); ChangeMass(normIMB, defIMB, weight, growth); } #endregion MyMetods.Pause(); }
//Ронжин Л. //1. а) Дописать структуру Complex, добавив метод вычитания комплексных чисел.Продемонстрировать работу структуры. //б) Дописать класс Complex, добавив методы вычитания и произведения чисел.Проверить работу класса. //в) Добавить диалог с использованием switch демонстрирующий работу класса. static void Main(string[] args) { string mes1 = "Введите вещественную часть 1го числа"; string mes2 = "Введите мнимую часть 1го числа"; Complex complex1 = new Complex(MyMetods.ReadInt(mes1), MyMetods.ReadInt(mes2)); //Console.WriteLine(complex1); mes1 = "Введите вещественную часть 2го числа"; mes2 = "Введите мнимую часть 2го числа"; Complex complex2 = new Complex(MyMetods.ReadInt(mes1), MyMetods.ReadInt(mes2)); //Console.WriteLine(complex2); Complex rez; MyMetods.Print($"У Вас есть 2 комплексных числа {complex1} и {complex1}.\n" + $"Вы можете их сложить, найти их разницу или умножить.\n" + $"Введите соответствующий символ.\n" + $"\"+\" - для сложения,\n\"-\" - для нахождения разницы,\n\"*\" - для умножения."); string sym = Console.ReadLine(); switch (sym) { case "+": rez = Complex.Sum(complex1, complex2); Console.WriteLine($"({complex1}) {sym} ({complex2}) = {rez}"); break; case "-": rez = Complex.Subtraction(complex1, complex2); Console.WriteLine($"({complex1}) {sym} ({complex2}) = {rez}"); break; case "*": rez = Complex.Multi(complex1, complex2); Console.WriteLine($"({complex1}) {sym} ({complex2}) = {rez}"); break; default: MyMetods.Print("Вы выбрали несуществующее действие, программа ничего не выполнила."); break; } MyMetods.Pause(); }
static void Main(string[] args) { /*5.а) Написать программу, которая выводит на экран ваше имя, фамилию и город проживания. * б) *Сделать задание, только вывод организовать в центре экрана. * в) **Сделать задание б с использованием собственных методов (например, Print(string ms, int * x,int y).*/ #region MyMetods.Print("Леонид Ронжин, город Санкт-Петербург."); int row = Console.CursorTop; Console.SetCursorPosition(40, ++row); MyMetods.Print("Леонид Ронжин, город Санкт-Петербург."); MyMetods.Print("Леонид Ронжин, город Санкт-Петербург.", 40, row += 2); MyMetods.Print("Леонид Ронжин, город Санкт-Петербург.", 40, row += 2, ConsoleColor.Red); MyMetods.Pause(); #endregion }
//3. С клавиатуры вводятся числа, пока не будет введен 0. Подсчитать сумму всех нечетных положительных чисел. static void Main(string[] args) { MyMetods.Print("Введите целое число."); int n = MyMetods.ReadInt(); int sum = 0; do { if (n > 0 && (n % 2 != 0)) { sum += n; } MyMetods.Print("Введите следующее число."); n = MyMetods.ReadInt(); }while (n != 0); Console.WriteLine($"Сумма всех нечетных положительных чисел введенных с клавиатуры - {sum}."); MyMetods.Pause(); }
//Ронжин Л. //4.Решить задачу с логинами из урока 2, только логины и пароли считать из файла в массив. //Создайте структуру Account, содержащую Login и Password. static void Main(string[] args) { string[,] arr = Account.ReadFile("LoginPass.txt"); int count = 1; // 1 т.к. использован цикл do while int tryCount = 3; do { MyMetods.Print("Введите логин."); string userLogin = Console.ReadLine(); MyMetods.Print("Введите пароль."); string userPassword = Console.ReadLine(); if (Account.Autorization(userLogin, userPassword)) { MyMetods.Print("Вы вошли в систему."); //count = trycount; break; } else { if (count == tryCount) { MyMetods.Print("Вы ввели неверный логин или пароль.\nВсе попытки использованы.\n"); } else { string str; if (tryCount - count == 2) { str = "ки"; } else { str = "ка"; } MyMetods.Print($"Вы ввели неверный логин или пароль.\nПопробуйте еще раз. У вас осталось {tryCount - count} попыт{str}.\n"); } } } while (count++ < tryCount); MyMetods.Pause(); }
//Ронжин Л. //2. а) С клавиатуры вводятся числа, пока не будет введён 0 (каждое число в новой строке). //Требуется подсчитать сумму всех нечётных положительных чисел. //Сами числа и сумму вывести на экран, используя tryParse. //б) Добавить обработку исключительных ситуаций на то, что могут быть введены некорректные данные. // При возникновении ошибки вывести сообщение.Напишите соответствующую функцию; static void Main(string[] args) { // Пункт б как я понимаю был выполнен еще на 1м уроке, где я заранее использовал tryParse MyMetods.Print("Введите целое число."); int n = MyMetods.ReadInt(); int sum = 0; string str = n.ToString(); do { if (n > 0 && (n % 2 != 0)) { sum += n; } MyMetods.Print("Введите следующее число."); n = MyMetods.ReadInt(); str = str + ", " + n.ToString(); }while (n != 0); Console.WriteLine($"Сумма всех нечетных положительных чисел из ряда: {str} составляет {sum}."); MyMetods.Pause(); }
static void Main(string[] args) { /*3.а) Написать программу, которая подсчитывает расстояние между точками с координатами x1, * y1 и x2,y2 по формуле r=Math.Sqrt(Math.Pow(x2-x1,2)+Math.Pow(y2-y1,2). Вывести результат, * используя спецификатор формата .2f (с двумя знаками после запятой); * б) *Выполнить предыдущее задание, оформив вычисления расстояния между точками в виде * метода.*/ #region MyMetods.Print("Укажите координату X1."); double x1 = MyMetods.ReadDouble(); MyMetods.Print("Укажите координату Y1."); double y1 = MyMetods.ReadDouble(); MyMetods.Print("Укажите координату X2."); double x2 = MyMetods.ReadDouble(); MyMetods.Print("Укажите координату Y2."); double y2 = MyMetods.ReadDouble(); double r = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2)); Console.WriteLine($"Вариант а.\nРасстояние между точками составляет : {r:f}."); Console.WriteLine($"Вариант б.\nРасстояние между точками составляет : {MyMetods.distance(x1, y1, x2, y2):f}."); MyMetods.Pause(); #endregion }
static void Main(string[] args) { /*4. Написать программу обмена значениями двух переменных: * а) с использованием третьей переменной; */ #region MyMetods.Print("Вариант а.\nУкажите 1ю переменную."); int a = MyMetods.ReadInt(); MyMetods.Print("Укажите 2ю переменную."); int b = MyMetods.ReadInt(); int c; c = a; a = b; b = c; Console.WriteLine($"Первая переменная: {a}.\nВторая переменная: {b}."); /* б) *без использования третьей переменной. */ MyMetods.Print("\nВариант б. Те же значения обратно."); a = a + b; b = a - b; a = a - b; Console.WriteLine($"Первая переменная: {a}.\nВторая переменная: {b}."); MyMetods.Pause(); #endregion }