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

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


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


| (логическое сложение)

Похоже на логическое умножение, операция также производится по двоичным разрядам, но теперь возвращается единица, если хотя бы у одного числа в данном разряде имеется единица. Например:

int x1 = 2; //010

int y1 = 5;//101

Console.WriteLine(x1|y1); // выведет 7 - 111

int x2 = 4; //100

int y2 = 5;//101

Console.WriteLine(x2 | y2); // выведет 5 - 101

^ (логическое исключающее ИЛИ)

Также эту операцию называют XOR, нередко ее применяют для простого шифрования:

int x = 45; // Значение, которое надо зашифровать - в двоичной форме 101101

int key = 102; //Пусть это будет ключ - в двоичной форме 1100110

 

int encrypt = x ^ key; //Результатом будет число 1001011 или 75

Console.WriteLine($"Зашифрованное число: {encrypt}") ;

 

int decrypt = encrypt ^ key; // Результатом будет исходное число 45

Console.WriteLine($"Расшифрованное число: {decrypt}");

 (логическое отрицание или инверсия)

Еще одна поразрядная операция, которая инвертирует все разряды: если значение разряда равно 1, то оно становится равным нулю, и наоборот.

int x = 12;                 // 00001100

Console.WriteLine(x);      // 11110011   или -13

3. Сложные операции присваивания: <<=, >>=, &=, ^=, |=.
Операции присвоения устанавливают значение. В операциях присвоения участвуют два операнда, причем левый операнд может представлять только модифицируемое именованное выражение, например, переменную

Как и во многих других языках программирования, в C# имеется базовая операция присваивания =, которая присваивает значение правого операнда левому операнду:
int number = 23;
Здесь переменной number присваивается число 23. Переменная number представляет левый операнд, которому присваивается значение правого операнда, то есть числа 23.
Кроме базовой операции присвоения в C# есть еще ряд операций:


  • +=: присваивание после сложения. Присваивает левому операнду сумму левого и правого операндов: выражение A += B равнозначно выражению A = A + B

  • -=: присваивание после вычитания. Присваивает левому операнду разность левого и правого операндов: A -= B эквивалентно A = A - B

  • *=: присваивание после умножения. Присваивает левому операнду произведение левого и правого операндов: A *= B эквивалентно A = A * B

  • /=: присваивание после деления. Присваивает левому операнду частное левого и правого операндов: A /= B эквивалентно A = A / B

  • %=: присваивание после деления по модулю. Присваивает левому операнду остаток от целочисленного деления левого операнда на правый: A %= B эквивалентно A = A % B

  • &=: присваивание после поразрядной конъюнкции. Присваивает левому операнду результат поразрядной конъюнкции его битового представления с битовым представлением правого операнда: A &= B эквивалентно A = A & B

  • |=: присваивание после поразрядной дизъюнкции. Присваивает левому операнду результат поразрядной дизъюнкции его битового представления с битовым представлением правого операнда: A |= B эквивалентно A = A | B

  • ^=: присваивание после операции исключающего ИЛИ. Присваивает левому операнду результат операции исключающего ИЛИ его битового представления с битовым представлением правого операнда: A ^= B эквивалентно A = A ^ B

  • <<=: присваивание после сдвига разрядов влево. Присваивает левому операнду результат сдвига его битового представления влево на определенное количество разрядов, равное значению правого операнда: A <<= B эквивалентно A = A << B

  • >>=: присваивание после сдвига разрядов вправо. Присваивает левому операнду результат сдвига его битового представления вправо на определенное количество разрядов, равное значению правого операнда: A >>= B эквивалентно A = A >> B


Применение операций присвоения:

int a = 10;

a += 10;        // 20

a -= 4;         // 16

a *= 2;         // 32

a /= 8;         // 4

a <<= 4;      // 64

a >>= 2;      // 16
Операции присвоения являются правоассоциативными, то есть выполняются справа налево. Например:

int a = 8;

int b = 6;

int c = a += b -= 5;    // 9
В данном случае выполнение выражения будет идти следующим образом:

  1. b -= 5 (6-5=1)

  2. a += (b-=5) (8+1 = 9)

  3. c = (a += (b-=5)) (c = 9)

Источник: https://metanit.com/sharp/tutorial/2.23.php
Самостоятельная работа к лекции №4. "Блоки и пустые операторы, операторы ветвления (if, switch), операторы цикла (while, do, for), операторы передачи управления (goto, break, continue)."
Задача 1. Дана шахматная доска размером n*n клеток. Верхняя левая клетка доски черная и имеет номер (1, 1). Например, для n=4 шахматная таблица выглядит следующим образом:


 

1

2

3

4

 

1

 

 

 

 

2

 

 

 

 

3

 

 

 

 

4

 

 

 

 

1)     для заданного значения n определить количество черных ячеек шахматной доски;

2)     по номеру ячейки (k, m) определить ее цвет;

3)     определить, являются ли ячейки с номерами (k1, m1)  и (k2, m2) одного цвета;

4)     определить, находится ли фигура, стоящая в ячейке с номером (k1, m1), под ударом второй фигуры, стоящей в ячейке с номером (k2, m2), при условии, что ход второй фигуры и ей является: a) пешка; b) слон; c) ладья; d) ферзь; e) конь.
Код программы:
            Console.WriteLine("Введите длину и ширину шахматной доски");

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

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

 

            int[,] arr = new int[m,n];

           

            for (int i = 1;i <= m;i++)

            {

                for (int j = 1; j <= n; j++)

                {

                    if ((i % 2 != 0 && j % 2 != 0) || (i % 2 == 0 && j % 2 == 0))

                    {

                        Console.WriteLine($"Клетка по индексам m = {i}, n = {j}: Черная");

                    }

                    else

                    {

                        Console.WriteLine($"Клетка по индексам m = {i}, n = {j}: Белая");

                    }

                }

            }

 

            Start:

            Console.WriteLine("Введите номер подзадачи");

 

            int num = int.Parse(Console.ReadLine());

            //Ловушка программиста

            switch (num) {

 

                case 1:

                    {

                        Console.WriteLine("Введите размер доски");

                        n = int.Parse(Console.ReadLine());

                        if (Math.Pow(n, 2) % 2 != 0)

                        {

                            Console.WriteLine("Количество черный клеток на доске размером {0} = {1}", n, ((n * n) / 2 + 1));

                        } else

                        {

                            Console.WriteLine("Количество черный клеток на доске размером {0} = {1}", n, ((n * n) / 2));

                        }

                        Console.WriteLine("Продолжить?(y/n)");

                        string answer = Console.ReadLine();

                        if (answer == "y")

                        {

                            goto Start;

                        }

                        else break;

                    }

 

                case 2:

                    {

                        Console.WriteLine("Введите индексы клетки");

                        int ind1 = int.Parse(Console.ReadLine());

                        int ind2 = int.Parse(Console.ReadLine());

                        if ((ind1 % 2 != 0 && ind2 % 2 != 0) || (ind1 % 2 == 0 && ind2 % 2 ==0))

                        {

                            Console.WriteLine($"Индексы: {ind1} , {ind2}. Цвет: Черный");

                        }else

                        {

                            Console.WriteLine($"Индексы: {ind1} , {ind2}. Цвет: Белый");

                        }

 

                        Console.WriteLine("Продолжить?(y/n)");

                        string answer = Console.ReadLine();

                        if (answer == "y")

                        {

                            goto Start;

                        }

                        else break;

                    }

 

                case 3:

                    {

                       

                        Console.WriteLine("Введите индексы первой клетки");

                        int m1 = int.Parse(Console.ReadLine());

                        int n1 = int.Parse(Console.ReadLine());

                        Console.WriteLine("Введите индексы второй клетки");

                        int m2 = int.Parse(Console.ReadLine());

                        int n2 = int.Parse(Console.ReadLine());

 

                        bool col1, col2; // true - Черныйцвет, false - белый

 

                        if(m1 % 2 != 0 && n1 % 2 != 0 || m1 % 2 == 0 && n1 % 2 == 0) {

                            col1 = true;

                        }

                        else

                        {

                            col1 = false;

                        }

 

                        if (m2 % 2 != 0 && n2 % 2 != 0 || m2 % 2 == 0 && n2 % 2 == 0)

                        {

                            col2 = true;

                        }

                        else

                        {

                            col2 = false;

                        }

 

                        if (col1 == col2)  Console.WriteLine("Цвета одинаковые"); else Console.WriteLine("Цвета разные");

                       

                        Console.WriteLine("Продолжить?(y/n)");

                        string answer = Console.ReadLine();

                        if (answer == "y")

                        {

                            goto Start;

                        }

                        else break;

                    }

 

                case 4:

                    {

                        Console.WriteLine("Введите размер шахматной доски");

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

                       

 

                        byte[,] table = new byte[rows, rows];

 

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

                        {

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

                            {

                                table[i,j] = 0;

                            }

                        }

 

                        Console.WriteLine("Введите координаты первой фигуры");

                        int coord1 = int.Parse(Console.ReadLine());

                        int coord2 = int.Parse(Console.ReadLine());

                        table[coord1 - 1, coord2 - 1] = 1;

 

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

                        {

                           

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

                            {

                                Console.Write(table[i, j] + "  ");

                            }

                            Console.WriteLine();

                        }

 

                        Console.WriteLine("Введите фигуру");

                        string figure = Console.ReadLine();

                       

 

                        if (figure == "Пешка" || figure == "пешка")

                        {

                            Console.WriteLine("Введите координаты фигуры");

 

                            int coord21 = int.Parse(Console.ReadLine());

                            int coord22 = int.Parse(Console.ReadLine());

 

                            table[coord21 - 1, coord22 - 1] = 2;

 

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

                            {

 

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

                                {

                                    Console.Write(table[i, j] + "  ");

                                }

                                Console.WriteLine();

                            }

 

                        if ((coord21 - 1 == coord1 && coord22 == coord2 - 1) || coord21 - 1 == coord1 && coord22 == coord2 + 1)

                                {

                                    Console.WriteLine("Фигура 1 под атакой!");

                                }

                                else

                                {

                                    Console.WriteLine("Фигура 1 в безопасности");

                                }

                           

                        }

                        if (figure == "Конь"  || figure == "конь")

                        {

                            Console.WriteLine("Введите координаты фигуры");

 

                            int coord21 = int.Parse(Console.ReadLine());

                            int coord22 = int.Parse(Console.ReadLine());

 

                            table[coord21 - 1, coord22 - 1] = 2;

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

                            {

 

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

                                {

                                    Console.Write(table[i, j] + "  ");

                                }

                                Console.WriteLine();

                            }

 

                            if ((coord1 - 1 == coord21 && coord21 - 2 == coord22) || (coord1 - 1 == coord21 && coord21 + 2 == coord22)

                               || (coord1 + 1 == coord21 && coord2 - 2 == coord22) || (coord1 + 1 == coord21 && coord2 + 2 == coord22)

                               || (coord1 + 2 == coord21 && coord2 - 1 == coord22) || (coord1 - 2 == coord21 && coord2 - 1 == coord22)

                               || (coord1 - 2 == coord21 && coord2 - 2 == coord22) || (coord1 + 2 == coord21 && coord2 + 1 == coord22))

                            {

                                Console.WriteLine("Фигура 1 атакована!");

                            }

                            else

                            {

                                Console.WriteLine("Фигура 1 в безопасности");

                            }

                        }

                        if (figure == "Слон"  || figure == "слон")

                        {

                            Console.WriteLine("Введите координаты фигуры");

 

                            int coord21 = int.Parse(Console.ReadLine());

                            int coord22 = int.Parse(Console.ReadLine());

 

                            table[coord21 - 1, coord22 - 1] = 2;

 

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

                            {

 

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

                                {

                                    Console.Write(table[i, j] + "  ");

                                }

                                Console.WriteLine();

                            }

 

                            for (int i = coord21 - 1,j = coord22 - 1; i >= 0 && j>= 0; i--,j--)

                            {

                                if (i == (coord1 - 1) && j == (coord2 - 1))

                                {

                                    Console.WriteLine("Фигура 1 атакована!");

                                    goto Continue;

                                }

                            }

                            for (int i = coord21 - 1, j = coord22 - 1; i >= 0 && j < rows; i--, j++)

                            {

                                if (i == (coord1 - 1) && j == (coord2 - 1))

                                {

                                    Console.WriteLine("Фигура 1 атакована!");

                                    goto Continue;

                                }

                            }

                            for (int i = coord21 - 1, j = coord22 - 1; i < rows && j >= 0; i++, j--)

                            {

                                if (i == (coord1 - 1) && j == (coord2 - 1))

                                {

                                    Console.WriteLine("Фигура 1 атакована!");

                                    goto Continue;

                                }

                            }

                            for (int i = coord21 - 1, j = coord22 - 1; i < rows && j < rows; i++, j++)

                            {

                                if (i == (coord1 - 1) && j == (coord2 - 1))

                                {

                                    Console.WriteLine("Фигура 1 атакована!");

                                    goto Continue;

                                }

                            }

 

                            Console.WriteLine("Фигура 1 в безопасности");

                        }

                        if (figure == "Ладья" || figure == "ладья")

                        {

                            Console.WriteLine("Введите координаты фигуры");

 

                            int coord21 = int.Parse(Console.ReadLine());

                            int coord22 = int.Parse(Console.ReadLine());

 

                            table[coord21 - 1, coord22 - 1] = 2;

 

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

                            {

 

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

                                {

                                    Console.Write(table[i, j] + "  ");

                                }

                                Console.WriteLine();

                            }

 

                            if (coord21 == coord1 || coord22 == coord2) {

                                Console.WriteLine("Фигура 1 атакована!");

                            }

                            else

                            {

                                Console.WriteLine("Фигура 1 в безопасности");

                            }

 

                        }

                        if (figure == "Ферзь" || figure == "ферзь") {

                            Console.WriteLine("Введите координаты фигуры");

 

                            int coord21 = int.Parse(Console.ReadLine());

                            int coord22 = int.Parse(Console.ReadLine());

 

                            table[coord21 - 1, coord22 - 1] = 2;

 

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

                            {

 

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

                                {

                                    Console.Write(table[i, j] + "  ");

                                }

                                Console.WriteLine();

                            }

 

                            for (int i = coord21 - 1, j = coord22 - 1; i >= 0 && j >= 0; i--, j--)

                            {

                                if (i == (coord1 - 1) && j == (coord2 - 1))

                                {

                                    Console.WriteLine("Фигура 1 атакована!");

                                    goto Continue;

                                }

                            }

                            for (int i = coord21 - 1, j = coord22 - 1; i >= 0 && j < rows; i--, j++)

                            {

                                if (i == (coord1 - 1) && j == (coord2 - 1))

                                {

                                    Console.WriteLine("Фигура 1 атакована!");

                                    goto Continue;

                                }

                            }

                            for (int i = coord21 - 1, j = coord22 - 1; i < rows && j >= 0; i++, j--)

                            {

                                if (i == (coord1 - 1) && j == (coord2 - 1))

                                {

                                    Console.WriteLine("Фигура 1 атакована!");

                                    goto Continue;

                                }

                            }

                            for (int i = coord21 - 1, j = coord22 - 1; i < rows && j < rows; i++, j++)

                            {

                                if (i == (coord1 - 1) && j == (coord2 - 1))

                                {

                                    Console.WriteLine("Фигура 1 атакована!");

                                    goto Continue;

                                }

                            }

                            if (coord21 == coord1 || coord22 == coord2)

                            {

                                Console.WriteLine("Фигура 1 атакована!");

                                goto Continue;

                            }

                            Console.WriteLine("Фигура 1 в безопасности");

                        }

 

                        Continue:

                        Console.WriteLine("Продолжить?(y/n)");

                        string answer = Console.ReadLine();

                        if (answer == "y")

                        {

                            goto Start;

                        }

                        else break;

                    }

 

                default:

                    {

                        Console.WriteLine("Такой подзадачи не существует");

                        break;

                    }

                    }

 

       


























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


Задача 2. Задана дата в формате <день>.<месяц>.<год>. Определить:

1) сколько дней прошло с начала года;     2) сколько дней осталось до конца года;

3) дату предыдущего дня;                           4) дату следующего дня.
Код программы:
Console.WriteLine(">Введите дату в формате dd.MM.yyyy:");

DateTime dt = DateTime.Parse(Console.ReadLine());

Console.WriteLine(">Дней прошло с начала года:" + dt.DayOfYear);

DateTime now = DateTime.Now;

int nextYear = now.Year + 1;

DateTime nextNewYear = new DateTime(nextYear, 1, 1);

nextNewYear = new DateTime(nextNewYear.Ticks - 1);

int days = nextNewYear.DayOfYear - now.DayOfYear;

Console.WriteLine(">Дней осталось до конца года:" + days);

Console.WriteLine(">Дата предыдущего дня:" + dt.AddDays(-1).ToShortDateString());

Console.WriteLine(">Дата следующего дня:" + dt.AddDays(+1).ToShortDateString());

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


Задача 3. Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ную степень, равна самому числу. Например, 153=13+53+33. Найти все трехзначные числа Армстронга.
Код программы:

using System;

namespace Rextester

{

public class Program

{

public static void Main(string[] args)

{

for (int i = 100; i <= 999; i++)

{

int a = i % 10;

int b = (i / 10) % 10;

int c = (i / 100) % 10;

int tmp = a * a * a + b * b * b + c * c * c;

if (i == tmp)

{

Console.WriteLine(i);

}

}

Console.ReadKey();

}

}

}

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


Задача 4. Стороны прямоугольника заданы натуральными числами n  и m. Найти количество квадратов (стороны которых выражены натуральными числами), на которые можно разрезать данный прямоугольник, если от него каждый раз отрезать квадрат:       

1) наименьшей площади;    2) наибольшей площади
Код программы:

using System;

                   

public class Program

{

    public static void Main(){

       

        int n = 8;

        int m = 3;

       

        //маленькие квадратики

        int mi = n*m;

        Console.WriteLine(mi);

       

        // большие квадраты

        int k = 0; // количество квадратов

        while(n != m){

            if(n > m){

                n = n - m;

                k++;

            }

            else{

                m = m - n;

                k++;

            }

        }

        k++;

 

        Console.WriteLine(k);

    }

}




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



Самостоятельная работа к лекции №5. "Методы: основные понятия. Перегрузка методов."
I. Написать программу, вычисляющую первые n элементов заданной последовательности:


II. Вычислить и вывести на экран значение n члена последовательности для каждого x [a,b] c шагом h=0.1 Результат работы программы представить в виде следующей таблицы:

 



Значение x

Значение функции  bn(x)

1

 

 

2

 

 



 

 


Замечание. Для решения задачи разработать метод, в который передаются значения х и n, и которым возвращается значение bn.


I



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

Console.WriteLine("Введите n");

double n = Convert.ToDouble(Console.ReadLine());

double bn;

double b = 9;

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

{

if (i == 1) bn = b;

else

{

bn = 0.1 * b + 10;

b = bn;

}

Console.WriteLine(bn);

}

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




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

class Program

{

static int Main(string[] args)

{

int n = 20;

double[] mylist = new double[n + 1];

sequence(n, ref mylist);

for (int i = 1; i < mylist.Length; i++)

{

Console.WriteLine("n = " + i + "; b = " + mylist[i]);

}

Console.ReadKey();

return 0;

}
static double sequence(int n, ref double[] mylist1)

{

double result = default(double);
if (n == 1)

{

result = 1;

}

else if (n == 2)

{

result = 2;

}

else

{

result = (n * sequence(n - 2, ref mylist1) - sequence(n - 1, ref mylist1)) / (n + 1);

}
mylist1[n] = result;

return result;

}

}




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


II.



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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            int x = 1;

            int n = 3;

            Console.WriteLine(res(n,x));

            Console.ReadLine();

        }

        static int res(int n,int b)

        {

            if (n == 1)

            {

                return b;

            }

            else

                return res(n - 1, b) +( 2 * res(n - 1, b));

        }

    }

}

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




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

static double B(double x, int n)

{
if (n == 1)

{

return x;

}
else

{
if (n % 2 == 0)

{

return B(x, 2 * n - 1) + x;

}

else

{

return 2 * B(x, 2 * n);

}

}

}
static void Main(string[] args)
{

double h = 0.1;
// Ввод n
Console.Write("n="); int n = int.Parse(Console.ReadLine());
// Ввод a, b
Console.Write("a="); double a = double.Parse(Console.ReadLine());
Console.Write("b="); double b = double.Parse(Console.ReadLine());
// Вызов метода b и вывод результата
for (double x = a; x <= b; x += h)

{

double otv = B(x, n);
Console.WriteLine("b({0,6:##0.00}; {1}) ={2,8:####0.00}", x, n, otv);

}

Console.ReadKey();

}




Самостоятельная работа к лекции №6. "Рекурсия: прямая и косвенная, простая и «сложная». Рекурсивные методы возвращающие и не возвращающие значение."
Задача 1. Разработать рекурсивный метод для вывода на экран всех возможных разложений натурального числа n на множители (без повторений). Например, для n=12 на экран должно быть выведено:

2*2*3=12

2*6=12

3*4=12

 

Задача 2. Разработать рекурсивный метод для вывода на экран всех возможных разложений натурального числа n на слагаемые (без повторений). Например, для n=5 на экран должно быть выведено:

1+1+1+1+1=5

1+1+1+2=5

1+1+3=5

1+4=5

2+1+2=5

2+3=5
Задача 1

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Lab

{

class Program

{

static void F(int delitel, int n, int j, int m, int[] a)

{

if (n == 1)//вывод на экран

{

for (int i = 0; i < j - 1; i++)

Console.Write(a[i] + "*");

if (j > 0 && a[j - 1] != m)

Console.WriteLine(a[j - 1] + "=" + m);

return;

}

for (a[j] = delitel; a[j] <= n; a[j]++)//определение множителей

if ((n % a[j]) == 0)

F(a[j], n / a[j], j + 1, m, a);

}

static void Main()

{

int[] a = new int[100];

Console.Write("Введите число: ");

int n = int.Parse(Console.ReadLine());

int m = n;

F(2, n, 0, m, a);//начальный делитель, число, начало массива, повторение числа, сам массив

}

}

}




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



Задача 2
Код программы:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;
namespace ConsoleApplication13

{

class Program

{
public static void Main()

{

One ob = new One();

ob.two();

}
}

class One

{

int a = 1, b = 1;

public void two()

{

Console.WriteLine("Введите n: ");

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

rec(x);

}

public void rec(int x)

{

for (int i = 1; i < x; i++)

{

Console.Write(a);

for (int j = x - i; j > 1; j--)

{

Console.Write(" + 1");

}

Console.Write(" + " + b);

Console.WriteLine();

b++;

}

b = a + 1;

a++;

if (x > 1)

rec(x - 2);

}

}

}



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



Самостоятельная работа к лекции №7. "Обработка исключений: операторы try, checked и unchecked. Генерация собственных исключений."
Практическое задание

Замечание. При решении задач производить обработку следующих исключительных ситуаций: ввода пользователем недопустимых  значений и переполнения при вычислении математических выражений.
I. Для заданного натурального nи действительного х подсчитать следующие суммы:

Решение
4)



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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;
namespace ConsoleApplication14

{

class Program

{

static void Main(string[] args)

{

double s = 0;

int n;

Console.Write("n = ");

n = Convert.ToInt32(Console.ReadLine());
for (int i = 1; i <= n; i++)

s += (Math.Pow(-1, i)) / (Math.Pow(2, i));
Console.WriteLine(s);

Console.ReadKey();

}

}

}

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


2)



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

int n = 5;

double x = 1.2345;
double el = x;

double sum = 0;

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

{

el = Math.Sin(el);

sum += el;

}

Console.WriteLine(sum);

Console.ReadKey();


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


II. Для заданного натурального k и действительного подсчитать следующие выражения:

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

 class Program

    {

        static void Main(string[] args)

        {

            double x = 6.0;

            long k = 1;

 

            double res = 0;

            for(long n = 1; n <= k; ++n)

            {

                res += GetSign(n + 1) * GetPower(x, 2 * n - 1) / GetFact(2 * n - 1);

            }

 

            Console.WriteLine(res);

            Console.ReadKey();

        }

 

        private static long GetSign(long a)

        {

            return a % 2 == 0 ? 1 : -1;

        }

 

        private static double GetPower(double a, long pow)

        {

            double res = a;

            for(long i = 1; i < pow; ++i)

            {

                res *= a;

            }

            return res;

        }

 

        private static long GetFact(long n)

        {

            return n == 0 ? 1 : n * GetFact(n-1);

        }

    }




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


III. Вычислить бесконечную сумму ряда с заданной точностью е (e>0).


1)
Код работы:

using System;

 

namespace ConsoleApplication1

{

    class Program

    {

 

        static void Main(string[] args)

        {

            double sum, i, eps = 0, sl;

            Console.WriteLine("Введите точность: ");

            try

            {

                eps = Convert.ToDouble(Console.ReadLine());

            }

            catch

            {

                Console.WriteLine("Некорректный ввод!");

            }

            if (eps > 0)

            {

                sum = 0;

                i = 1;

                sl = 1 / (i * i);

                while (sl > eps)

                {

                    sum += sl;

                    i++;

                    sl = 1 / (i * i);

                }

                Console.WriteLine("Сумма ряда = " + sum);

            }

            else

            {

                Console.WriteLine("Введите e больше нуля!");

            }

            Console.ReadLine();

        }

    }

}




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



Самостоятельная работа к лекции №8. "Массивы: одномерные, многомерные и ступенчатые."
I. В одномерном массиве, элементы которого – целые числа, произвести следующие действия:

1.     Удалить из массива все четные числа.

2.     Вставить новый элемент после всех элементов, которые заканчиваются на данную цифру.

3.     Удалить из массива повторяющиеся элементы, оставив только их первые вхождения.

4.     Вставить новый элемент между всеми парами элементов, имеющими разные знаки.

5.     Уплотнить массив, удалив из него все нулевые значения.
II. В двумерном массиве, элементы которого – целые числа, произвести следующие действия:

1.     Вставить новую строку после строки, в которой находится первый встреченный минимальный элемент.

2.     Вставить новый столбец перед всеми столбцами, в которых встречается заданное число.

3.     Удалить все строки, в которых нет ни одного четного элемента.

4.     Удалить все столбцы, в которых все элементы положительны.

5.     Удалить из массива k-тую строку и j-тый столбец, если их значения совпадают.

6.     Уплотнить массив, удалив из него все нулевые строки и столбцы.
1   2   3


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