Главная страница

Алгоритмитизация. 1. Алгоритмизация. Самостоятельная работа к лекции 2. "Технология объектноориентированного программирования. Состав языка. Типы данных. Переменные, именованные константы. Вводвывод данных. Форматирование данных."


Скачать 2.89 Mb.
НазваниеСамостоятельная работа к лекции 2. "Технология объектноориентированного программирования. Состав языка. Типы данных. Переменные, именованные константы. Вводвывод данных. Форматирование данных."
АнкорАлгоритмитизация
Дата19.10.2022
Размер2.89 Mb.
Формат файлаdocx
Имя файла1. Алгоритмизация.docx
ТипСамостоятельная работа
#741662
страница3 из 3
1   2   3
Часть 1

Код программы:

using System;

using System.Linq;

 

namespace ConsoleApplication13

{

    class Program

    {

        static void Main()

        {

            Work w = new Work(10);

            w.show("До:");

            //w.dellEven();

            //w.show("После удаления:");

            //Console.Write("Цифра для поиска: ");

            //int num = Convert.ToInt32(Console.ReadLine());

            //Console.Write("Число для добавления: ");

            //int val = Convert.ToInt32(Console.ReadLine());

            //w.addElementAfter(num, val);

            //w.show("Последобавления: ");

            //w.dellDupl();

            //w.show("После удаления повторений: ");

            //w.dellZero();

            //w.show("После удаления нулей");

            Console.Write("Ввод элемента для вставки между: ");

            int x = Convert.ToInt32(Console.ReadLine());

            w.addElementBetween(x);

            w.show("После добавления: ");

            Console.ReadKey();

        }

    }

 

    class Work

    {

        private int[] mass;

 

        public Work(int n)

        {

            Random rnd = new Random();

            mass = new int[n];

            for(int i = 0; i < n; i++)

            {

                mass[i] = rnd.Next(-n*2,n*2);

            }

        }

 

        public void dellEven()

        {

            int count = 0;

            for (int i = 0; i < mass.Length; i++)

            {

                if (mass[i] % 2 == 0)

                {

                    count++;

                    int j = i;

                    while (j != 0 && mass[j - 1] % 2 == 0)

                    {

                        int x = mass[j];

                        mass[j] = mass[j - 1];

                        mass[j - 1] = x;

                        j--;

                    }

                }

            }

            Array.Resize(ref mass, count);

        }

 

        public void addElementAfter(int num, int val)

        {

            for (int i = 0; i < mass.Length; i++)

            {

                if (mass[i] == val)

                    continue;

                if (mass[i] % 10 == num)

                {

                    Array.Resize(ref mass, mass.Length + 1);

                    for (int j = mass.Length - 1; j >= i+1; j--)

                    {

                        mass[j] = mass[j-1];

                    }

                    mass[i+1] = val;

                }

            }

        }

 

        public void dellDupl()

        {

            int [] massWork = new int[0];

            for (int i = 0; i < mass.Length; i++)

            {

                if (!massWork.Contains(mass[i]))

                {

                    Array.Resize(ref massWork, massWork.Length + 1);

                    massWork[massWork.Length - 1] = mass[i];

                }

            }

            mass = massWork;

        }

 

        public void dellZero()

        {

            for (int i = 0; i < mass.Length; i++)

            {

                if (mass[i] == 0)

                {

                    delElem(1,i);

                }

            }

        }

 

        public void addElementBetween(int val)

        {

            for (int i = 0; i < mass.Length-1; i++)

            {

                if (mass[i] == val)

                    continue;

                if ((mass[i] > 0 && mass[i + 1] < 0) || (mass[i] < 0 && mass[i + 1] > 0))

                {

                    Array.Resize(ref mass, mass.Length + 1);

                    for (int j = mass.Length - 1; j >= i + 1; j--)

                    {

                        mass[j] = mass[j - 1];

                    }

                    mass[i + 1] = val;

                }

            }

        }

       

        private void delElem(int kol_el, int pos)

        {

            for (int i = pos; i < mass.Length - kol_el; i++)

                mass[i] = mass[i + kol_el];

            Array.Resize(ref mass, mass.Length - kol_el);  

        }

 

        public void show(string msg)

        {

            Console.WriteLine(msg);

            for (int i = 0; i < mass.Length; i++)

                Console.Write(mass[i] + " ");

            Console.WriteLine();

        }

    }

}












Работа программы:


Часть 2
Код программы:

using System;

 

namespace ConsoleApplication16

{

    class Program

    {

        static void Main()

        {

            Work w = new Work(5,5);

            w.show("До: ");

            w.addAfterMin();

            w.show("После: ");

            Console.ReadKey();

        }

    }

 

    class Work

    {

        private int[,] mass;

        private int n;

        private int m;

        public Work(int n, int m)

        {

            mass = new int[this.n = n, this.m = m];

            Random rnd = new Random();

            for (int i = 0; i < n; i++)

                for (int j = 0; j < m; j++)

                    mass[i, j] = rnd.Next(100);

        }

 

        private int getMin()

        {

            int min = mass[0, 0];

            for (int i = 0; i < n; i++)

                for (int j = 0; j < m; j++)

                    if (min > mass[i, j])

                        min = mass[i, j];

            return min;

        }

 

        private int getIndexFirstMin()

        {

            int min = getMin();

            for (int i = 0; i < n; i++)

                for (int j = 0; j < m; j++)

                    if (mass[i, j] == min)

                        return i;

            return -1;

        }

 

        public void addAfterMin()

        {

            int index = getIndexFirstMin()+1;

            int[,] massWork = new int[++n, m];

            Random rnd = new Random();

            for (int i = 0; i < n; i++)

            {

                for (int j = 0; j < m; j++)

                {

                    if (i == index)

                    {

                        massWork[i, j] = rnd.Next(-100,100);

                        continue;

                    }

                    if (i > index)

                    {

                        massWork[i, j] = mass[i - 1, j];

                        continue;

                    }

                    massWork[i, j] = mass[i, j];

                }

            }

            mass = massWork;

        }

 

        public void show(string msg)

        {

            Console.WriteLine(msg);

            for (int i = 0; i < n; i++, Console.WriteLine())

                for (int j = 0; j < m; j++)

                    Console.Write("{0}\t",mass[i,j]);

        }

    }

}






Работа программы:


Самостоятельная работа к лекции №9. "Символьный тип char, неизменяемы строки string и изменяемые строки StringBuider."
Задача 1. Известны фамилия, имя  и отчество пользователя. Найти его код личности. Правило получения кода личности: каждой букве ставится в соответствие число – порядковый номер буквы в алфавите. Эти числа складываются. Если полученная сумма не является однозначным числом, то цифры числа снова складываются и так до тех пор, пока не будет получено однозначное число. Например:

Исходные данные: Александр Сергеевич Пушкин

Код личности: (1+13+6+12+19+1+15+5+18)+(19+6+18+4+6+6+3+10+25)+(17+21+26+12+10+15)=

=288 Þ 2+8+8=18 Þ 1+8=9
Код программы:

        public static string Alphabet = GetAplhabetString();

        static string GetAplhabetString()

        {

            var str = new StringBuilder();

            for (char i = 'а'; i <= 'я'; i++)

            {

                str.Append(i.ToString());

            }

            return str.ToString();

        }

 

        public static int[] GetNumberCodes(string text)

        {

            int[] array = new int[text.Length];

            for (int i = 0; i < text.Length; i++)

            {

                array[i] = Alphabet.IndexOf(text[i]) + 1;

            }

            return array;

        }

        public static int SumDigits(int Number)

        {

            int Sum = 0;

            while (Number > 0)

            {

                Sum += Number % 10;

                Number /= 10;

            }

            return Sum;

        }

        static void Main()

        {

            string text = "Александр Сергеевич Пушкин".Replace(" ", "").ToLower();

            int[] mas = GetNumberCodes(text);

            int Sum = mas.Sum();

            while (Sum > 9)

            {

                Sum = SumDigits(Sum);

            }

            Console.WriteLine(Sum);

        }






Работа программы:



C:\Users\Юлия\source\repos\ConsoleApp19\ConsoleApp19\Program.cs


Задача 2. В шифре Цезаря алфавит размещается на круге по часовой стрелке. За последней буквой алфавита идет первая буква алфавита, т.е. после буквы «я» идет буква «а». При шифровании текста буквы заменяются другими буквами, отстоящими по кругу на заданное количество позиций (сдвиг) дальше по часовой стрелке. Например, если сдвиг равен 3, то буква «а» заменяется на букву «г», буква «б» на букву «д», а буква «я» на букву «в».

Зашифровать сообщение, используя шифр Цезаря со сдвигом k.
Код программы:

class Program

{

class CaesarCipher

{

static void Main(string[] args)

{

if (args.Length < 2)

{

Console.WriteLine("Первый аргумент -ТЕКСТ, второй аргумент -сдвиг");

Console.ReadKey();

}

else

{

string decoded_text = args[0];

string encrypted_text = " ";

int shift = Int32.Parse(args[1]);

char character = '0';

decoded_text = decoded_text.ToUpper();
char[] alphabet = new char[33] { 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У',

'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я' };
Console.WriteLine("Шифруем текст {0}", decoded_text); //Display the decoded text
foreach (char c in decoded_text)

{

character = c;

int shift1 = Array.IndexOf(alphabet, character) - shift;

if (shift1 <= 0)

shift1 = shift1 + 33;
if (shift1 >= 33)

shift1 = shift1 - 33;

encrypted_text += alphabet[shift1];

}

Console.WriteLine("\nСдвиг {0}, {1}", shift, encrypted_text);
Console.WriteLine("Дешифруем текст {0}", encrypted_text);
Console.ReadKey();

}

}

}

}


1   2   3


написать администратору сайта