Главная страница
Навигация по странице:

  • I. Написать программу, которая подсчитывает

  • II. Написать программу, которая определяет

  • III. Следующие задания выполните для натурального трехзначного числа, если номер задания четный и для натурального четырехзначного, если номер нечетный.

  • III. Составить программу. Замечание. При решении данных задач можно использовать как оператор switch, так и вложенные операторы if. Свой выбор обоснуйте

  • IV. Вывести на экран. При решении задачи можно использовать любой из операторов цикла while, do while и for. Свой выбор обоснуйте

  • V. Вывести на экран числа следующим образом

  • VI. Постройте таблицу значений функции y=f(x) для х  [a, b] с шагом h.

  • II. Использование базовых алгоритмов при разработке методов

  • 2. В разделе «Алгоритмы вычисления корня n-ой степени» мы рассмотрели алгоритм, который позволяет итерационным методом вычислить

  • II. Дана последовательность из n действительных чисел. Задачи из данного пункта решить, используя одномерный массив

  • III. Дан массив размером n×n, элементы которого целые числа. При решении задач из данного пункта использовать двумерные или ступенчатые массивы

  • IV. Дан массив размером n×n, элементы которого целые числа. Для хранения массив n×n использовать двумерный или ступенчатый массив.

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

  • VI. В массиве размером n×n, элементы которого – целые числа, произвести следующие действия: Для хранения массив n×n использовать двумерный или ступенчатый массив.

  • II. Разработать программу, которая для заданной строки s

  • III. Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания.

  • II. Работа с символьными потоками.

  • программы на си шарпе. Написать программу, которая, реализует диалог с пользователем


    Скачать 247.12 Kb.
    НазваниеНаписать программу, которая, реализует диалог с пользователем
    Анкорпрограммы на си шарпе
    Дата27.06.2022
    Размер247.12 Kb.
    Формат файлаdocx
    Имя файлас#.docx
    ТипПрактикум
    #617329


    Практикумы

    1. Написать программу, которая, реализует диалог с пользователем:

    Запрашивает с клавиатуры два целых числа, и выводит на экран сумму данных чисел в прямом и обратном порядке: a=12, b=34, 12+34=34+12

    using System;

    namespace ConsoleApp1

    {

    class Program

    {

    static void Main()

    {

    Console.Write("a=");

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

    Console.Write("b=");

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

    Console.WriteLine("{0} + {1} = {1} + {0}", a, b);

    Console.WriteLine();

    }

    }

    }

    1. I. Написать программу, которая подсчитывает:

    Расстояние между точками с координатами a, b и с, d;

    using System;

    namespace ConsoleApp2

    {

    class Program

    {

    static void Main()

    {

    double a, b, c, d, sum;

    double sum1;

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

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

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

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

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

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

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

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

    sum = Math.Sqrt(Math.Pow(a - b, 2));

    sum1 = Math.Sqrt(Math.Pow(c - d, 2));

    Console.WriteLine("расстояние между точками а и b=" + " " + sum);

    Console.WriteLine("расстояние между точками c и d=" + " " + sum1);

    }

    }

    }

    II. Написать программу, которая определяет:

    Является ли заданное целое число нечетным;

    using System;

    namespace ConsoleApp2

    {

    class Program

    {

    static void Main()

    {

    int i;

    Console.Write("i= ");

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

    if (i % 2 == 0)

    {

    Console.WriteLine("Четное");

    }

    else

    {

    Console.WriteLine("Нечетное");

    }

    Console.WriteLine();

    }

    }

    }

    III. Следующие задания выполните для натурального трехзначного числа, если номер задания четный и для натурального четырехзначного, если номер нечетный.

    В числе Х поменяли местами две последние цифры, старшую цифру уменьшили в два раза. Получилось число У. Зная значение числа У, найдите исходное число Х.

    using System;
    namespace ConsoleApp8

    {

    class Program

    {

    static void Main(string[] args)

    {

    Console.WriteLine("y=");

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

    int c = y % 10;

    y = y / 10;

    int b = y % 10;

    int a = y / 10;

    int x = 100 * a + 10 * c + b;

    Console.WriteLine("x={0}", x);

    }

    }

    }

    1. I. Для произвольных значений аргументов вычислить значение функции, заданной следующим образом:



    using System;
    namespace ConsoleApp4

    {

    class Program

    {

    static void Main()

    {

    Console.Write("x= ");

    double x = double.Parse(Console.ReadLine());

    if (x == 0 || x < -1)

    {

    Console.WriteLine("Функция не определена");

    }

    else

    {

    double y = 1 / x + Math.Pow(x, 2) - 1;

    Console.WriteLine("y({0:f2})={1:f2}", x, y);
    }

    }

    }

    }

    II. Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе» в зависимости от того, лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе. Области задаются графически следующим образом:






    III. Составить программу. Замечание. При решении данных задач можно использовать как оператор switch, так и вложенные операторы if. Свой выбор обоснуйте

    Дан номер масти m (1≤m≤4), определить название масти. Масти нумеруются: «пики» - 1, «трефы» - 2, «бубны» - 3, «червы» - 4.




    IV. Вывести на экран. При решении задачи можно использовать любой из операторов цикла while, do while и for. Свой выбор обоснуйте

    Квадраты всех четных чисел из диапазона от А до В (А≤В);

    using System;

    namespace ConsoleApp7

    {

    class Program

    {

    static void Main()

    {

    Console.Write("a= ");

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

    Console.Write("b= ");

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

    int i;

    Console.Write(" ");

    a = (a % 2 == 0) ? a : a + 1;

    for (i = a; i <= b; i += 2)

    {

    Console.Write(" {0}", i * i);

    }

    }

    }

    }

    V. Вывести на экран числа следующим образом:

    1 2 3 … 10

    1 2 3 … 10

    1 2 3 … 10

    1 2 3 … 10

    using System;

    namespace ConsoleApp8

    {

    class Program

    {

    static void Main()

    {

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

    {

    Console.Write("1 2 3 4 5 6 7 8 9 10");

    Console.WriteLine();

    }

    }

    }

    }

    VI. Постройте таблицу значений функции y=f(x) для х[a, b] с шагом h.



    using System;
    namespace ConsoleApp9

    {

    class Program

    {

    static void Main()

    {

    Console.Write("a= ");

    double a = double.Parse(Console.ReadLine());

    Console.Write("b= ");

    double b = double.Parse(Console.ReadLine());

    Console.Write("h= ");

    double h = double.Parse(Console.ReadLine());

    double y;

    int i = 1;

    for (double x = a; x <= b; x += h, ++i)

    {

    if (Math.Abs(x) < 3)

    {

    y = Math.Sin(x);

    Console.WriteLine("{0} {1:f2}", i, y);

    }

    else

    {

    if (3 <= Math.Abs(x) && Math.Abs(x) < 9)

    {

    y = (Math.Sqrt(Math.Pow(x, 2) + 1) / (Math.Pow(x, 2) + 5));

    Console.WriteLine("{0} {1:f2}", i, y);

    }

    else

    {

    if (Math.Abs(x) >= 9)

    {

    y = (Math.Sqrt(Math.Pow(x, 2) + 1) - Math.Sqrt(Math.Pow(x, 2) + 5));

    Console.WriteLine("{0} {1:f2}", i, y);

    }

    }

    }

    }

    Console.ReadLine();

    }

    }

    }

    1. II. Использование базовых алгоритмов при разработке методов

    Разработать метод, который для заданного натурального числа N возвращает количество его делителей. С помощью данного метода

    a) для каждого целого числа на отрезке [a, b] вывести на экран количество делителей; static void Main()

    {

    Console.Write("n: ");

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

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

    {

    if (n%i==0)

    {

    Console.Write("{0} ", i);

    }

    }

    }

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    namespace DividersApp

    {

    class Program

    {

    static void Main(string[] args)

    {

    Console.Write("Введите числа а и b через пробел: ");

    int[] range = range = Console.ReadLine().Split(' ').Select(n => int.Parse(n)).ToArray();

    List _dividers = new List();

    for (int i = range[0]; i <= range[1]; i++)

    {

    _dividers.Add(new CDividers(i));

    }

    Console.WriteLine("Для каждого целого числа на отрезке [a, b] вывести на экран количество делителей:");

    foreach (CDividers div in _dividers)

    {

    Console.WriteLine(div.ToString());

    }

    Console.WriteLine("Вывести на экран только те целые числа отрезка [a, b], у которых количество делителей равно заданному числу:");

    foreach (CDividers div in _dividers)

    {

    if (div.Dividers.Length == div.Num) Console.WriteLine(div.ToString());

    }

    Console.WriteLine("Вывести на экран только те целые числа отрезка [a, b], у которых количество делителей максимально:");

    CDividers _div = _dividers.OrderByDescending(d => d.Dividers.Length).First();

    Console.WriteLine(_div.ToString());

    Console.WriteLine("Для заданного числа А вывести на экран ближайшее следующее по отношению к нему число, имеющее столько же делителей, сколько и число А:");

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

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

    bool finded = false;

    foreach (CDividers div in _dividers)

    {

    if (div.Num >= A && div.Dividers.Length == A)

    {

    Console.WriteLine(div.ToString());

    finded = true;

    break;

    }

    }

    if (!finded) Console.WriteLine("Подходящие числа отсутствуют.");

    Console.ReadKey();

    }

    }

    public class CDividers

    {

    public int Num { get; private set; }

    public int[] Dividers { get; private set; }

    public bool HaveDividers { get; private set; }

    public CDividers(int num)

    {

    Num = num;

    Dividers = GetDividers(num);

    if (Dividers.Length > 0) HaveDividers = true;

    }

    private int[] GetDividers(int num)

    {

    List dividers = new List();

    for (int i = 1; i <= (num / 2 > 2 ? num / 2 : 2); i++)

    {

    if (num % i == 0 && num != i) dividers.Add(i);

    }

    dividers.Add(num);

    return dividers.ToArray();

    }

    public override string ToString()

    {

    if (!HaveDividers) return String.Format("Число {0} не имеет делителей\r\n", Num);

    StringBuilder sb = new StringBuilder();

    sb.AppendLine(String.Format("Число: {0}", Num));

    sb.Append("Делители: ");

    foreach (int div in Dividers)

    {

    sb.Append(div + " ");

    }

    sb.AppendLine();

    return sb.ToString();

    }

    }

    }


    b) вывести на экран только те целые числа отрезка [a, b], у которых количество делителей равно заданному числу;




    c) вывести на экран только те целые числа отрезка [a, b], у которых количество делителей максимально;




    d) для заданного числа А вывести на экран ближайшее следующее по отношению к нему число, имеющее столько же делителей, сколько и число А.




    1. 2. В разделе «Алгоритмы вычисления корня n-ой степени» мы рассмотрели алгоритм, который позволяет итерационным методом вычислить n𝐴, где A – произвольное положительное вещественное число, n – натуральное число. Проведите сравнительный анализ программной реализации данного алгоритма и стандартного метода Math.Pow(А, 1.0/n). Данные представьте в следующей таблице:

    Укажите характеристики компьютера, на котором проводились измерения. Проведите анализ входных значений, представленных в таблице, а также анализ полученных результатов. Сделайте вывод о том, какой алгоритм работает быстрее и почему. Предложите способы оптимизации программных реализаций алгоритмов, если это возможно.

    № алгоритма

    Значения x и n

    1 и 10

    2 и 41

    3 и 124

    2.1 и 5

    6.2 и 20

    123456789 и 3

    1234567890123.234 и 17

    Итерационный алгоритм

    1,250503519876339

    3,938902755324906

    1,0089422300634696

    1,1613075948354505

    1,0961625709918437

    497,93385921822545




    Стандартный метод

























    using System;
    namespace ConsoleApp6

    {

    class Program

    {

    static void Main()

    {

    Console.Write("а= ");

    double a = double.Parse(Console.ReadLine());

    Console.Write("n= ");

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

    Console.Write("e= ");

    double e = double.Parse(Console.ReadLine());

    double x0 = a / n;

    double x = ((n - 1) * x0 + a / Math.Pow(x0, n - 1)) / n;

    while (Math.Abs(x0 - x) >= e)

    {

    x0 = x;

    x = ((n - 1) * x0 + a / Math.Pow(x0, n - 1)) / n;

    }

    Console.WriteLine("x= {0}", x);

    }

    }

    }




    1. I. Дана последовательность целых чисел. Задачи из данного пункта решить двумя способами, используя одномерный массив, а затем двумерный. Размерность массива вводится с клавиатуры.

    Заменить все элементы, меньшие заданного числа, этим числом.

    using System;

    namespace ConsoleApp7

    {

    class Program

    {

    static void Main(string[] args)

    {

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

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

    int[] a = new int[] { 1, 2, 4, 7, 8, 12, 5 };

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

    {

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

    if (a[i] < n) a[i] = n;

    }

    Console.WriteLine();

    Console.WriteLine("Преобразованный массив: ");

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

    {

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

    }
    Console.WriteLine();

    }

    }

    }

    using System;

    namespace ConsoleApp7

    {

    class Program

    {

    static void Main(string[] args)

    {

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

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

    int[,] a = new int[5, 5];

    Random rand = new Random();

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

    {

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

    {

    a[i, j] = rand.Next(0, 15);

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

    if (a[i, j] < n) a[i, j] = n;

    }

    Console.WriteLine();

    }

    Console.WriteLine();

    Console.WriteLine("Преобразованный массив: ");

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

    {

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

    {

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

    }

    Console.WriteLine();

    }

    Console.WriteLine();

    }

    }

    }

    II. Дана последовательность из n действительных чисел. Задачи из данного пункта решить, используя одномерный массив

    Вывести на экран номера всех минимальных элементов.

    using System;

    namespace ConsoleApp7

    {

    class Program

    {

    static void Main(string[] args)

    {

    int[] a = { 1, 256, 23, 45, 78, 38, 2234, 10, };

    int min = int.MaxValue;

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

    {

    if (a[i] < min)

    min = a[i];

    }

    Console.WriteLine("Минимальный элемент массива: " + min);

    Console.WriteLine();

    }

    }

    }

    III. Дан массив размером n×n, элементы которого целые числа. При решении задач из данного пункта использовать двумерные или ступенчатые массивы

    Подсчитать среднее арифметическое четных элементов, расположенных ниже главной диагонали

    using System;

    namespace ConsoleApp7

    {

    class Program

    {

    static void Main(string[] args)

    {

    Console.Write("Какой размер массива : ");

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

    int[,] myArray_2 = new int[n, n];

    Random rnd = new Random();

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

    {

    Console.WriteLine();

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

    {

    myArray_2[i, j] = rnd.Next(10);

    Console.Write("{0} ", myArray_2[i, j]);

    }

    }

    int Average = 0, del = 1;

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

    {

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

    if (myArray_2[i, j] % 2 == 0)

    {

    Average += myArray_2[i, j];

    del++;

    }

    }

    Console.WriteLine("\nОтвет: {0}", Average / del);

    Console.WriteLine();

    }

    }

    }

    IV. Дан массив размером n×n, элементы которого целые числа. Для хранения массив n×n использовать двумерный или ступенчатый массив.

    Найти минимальный элемент в каждом столбце и записать данные в новый массив.

    using System;

    namespace ConsoleApp7

    {

    class Program

    {

    static void Main(string[] args)

    {

    Console.Write("Сколько ступенек будет в массиве : ");

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

    int[][] myArray_1 = new int[n][];

    int[] minArray = new int[n];

    Random rnd = new Random();
    for (int i = 0; i < myArray_1.Length; i++)

    {

    Console.WriteLine();

    myArray_1[i] = new int[i + 1];

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

    {

    myArray_1[i][j] = rnd.Next(10);

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

    }

    }

    int min = 0;

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

    {

    min = myArray_1[i][0];

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

    {

    if (min >= myArray_1[i][j])

    min = myArray_1[i][j];

    }

    minArray[i] = min;

    }

    Console.WriteLine("\n Минимальные Элементы ");

    foreach (int value in minArray)

    Console.Write("{0} ", value);

    Console.WriteLine();

    }

    }

    }

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

    Удалить из массива все максимальные элементы.

    using System;

    using System.Collections;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    namespace ConsoleApp7

    {

    class Program

    {

    static void Main(string[] args)

    {

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

    List lst = new List(N);

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

    {

    Console.WriteLine("элемент массива номер " + (i + 1) + ":");

    lst.Add(Convert.ToInt32(Console.ReadLine()));

    }

    Console.Write("Массив:");

    foreach (int x in lst)

    {

    Console.Write(x + " ");

    }

    Console.WriteLine();

    int max = lst.Max();

    Console.WriteLine("максимальный элемент массива= " + max);

    lst.Remove(max);

    Console.WriteLine("Массив без максимального элемента: ");

    foreach (int x in lst)

    {

    Console.Write(x + " ");

    }

    Console.WriteLine();

    }

    }

    }

    VI. В массиве размером n×n, элементы которого – целые числа, произвести следующие действия: Для хранения массив n×n использовать двумерный или ступенчатый массив.

    Вставить новый столбец после столбца, в котором нет ни одного отрицательного

    элемента




    8. I. Разработать программу, которая для заданной строки s: При решении задач использовать тип string.

    определяет, какой из двух заданных символов встречается чаще в строке;

    string

    using System;

    using System.Linq;

    namespace ConsoleApp7

    {

    class Program

    {

    static void Main(string[] args)

    {

    Console.WriteLine("Введите строку: ");

    string line = Console.ReadLine();

    Console.WriteLine("Исходная строка: " + line);

    Console.WriteLine("Введите символ x: ");

    char x = char.Parse(Console.ReadLine());

    Console.WriteLine("Введите символ y: ");

    char y = char.Parse(Console.ReadLine());
    int countX = line.Where(a => a == x).Count();

    int countY = line.Where(a => a == y).Count();

    string result = "Символ '{0}' встречается чаще в строке.";
    if (countX > countY)

    Console.WriteLine(result, x);

    else if (countY > countX)

    Console.WriteLine(result, y);

    else

    Console.WriteLine("Символы '{0}' и '{1}' встречаются одинаковое количество раз в строке.", x, y);
    Console.WriteLine();

    }

    }

    }

    II. Разработать программу, которая для заданной строки s:

    вставляет подстроку x после каждого вхождения подстроки y; StringBuilder

    Static void Main()

    {

    StringBuilder str = new StringBuilder (“кол около колокола");

    StringBuilder x = new StringBuilder (“кол");

    StringBuilder y = new StringBuilder (“!!!”);

    Int n = indexOf (str,x,0);

    While (n !=-1)

    {

    Str.Insert (n+x.Lenght,y);

    n = IndexOf (str,x,n+x.Length + y.Length);

    }

    Console.WriteLine(str);

    }

    III. Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания.

    Вывести только те слова сообщения, которые содержат не более чем n букв.




    9. I. Работа с символьными потокам.

    Дан текстовый файл. Найти количество строк, которые начинаются и заканчиваются одной буквой.

    using System;

    using System.Text;

    using System.IO;

    using System.Text.RegularExpressions;

    namespace MyProgram

    {

    class Program

    {

    static void Main()

    {

    using (StreamReader sr = new StreamReader("c:/text.txt"))

    {

    Console.Write("Введите заданную букву: ");

    char a = char.Parse(Console.ReadLine());

    StreamReader fileIn = new StreamReader("text.txt");

    string text = fileIn.ReadToEnd(); //считываем из файла весь текст

    fileIn.Close();

    int k = 0;

    string[] newText = Regex.Split(text, "[ ,.:;]+");

    foreach (string b in newText)

    if (b[0] == b[b.Length - 1])

    ++k;

    Console.WriteLine("k= " + k);

    }

    }

    }

    }

    II. Работа с символьными потоками.

    Дан файл f, компонентами которого являются целые числа. Переписать все отрицательные числа в файл g, положительные – в файл h.

    using System;

    using System.Text;

    using System.IO;

    using System.Text.RegularExpressions;

    {

    class Program

    {

    static void Main()

    {

    int i = 0;

    using (StreamReader fileIn = new StreamReader("c:/f.txt"))

    using (StreamReader fileOut = new StreamReader("c:/g.txt"))

    using (StreamReader fileOut1 = new StreamReader("c:/h.txt"))

    {

    if (i >= 0)

    {

    fileOut;

    }

    else

    {

    fileOut1.;






































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