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

  • Решение Листинг (исходный код программы)

  • Цель

  • Результат работы программы

  • Пояснительная записка. разработка программного обеспечения на языке высокого уровня c#


    Скачать 1.59 Mb.
    Названиеразработка программного обеспечения на языке высокого уровня c#
    Дата28.06.2022
    Размер1.59 Mb.
    Формат файлаdoc
    Имя файлаПояснительная записка.doc
    ТипПояснительная записка
    #618160
    страница4 из 6
    1   2   3   4   5   6

    Двумерные массивы


    Цель: изучить способы задания двумерных массивов и методы работы с ними.

    Теоретические сведения

    Простейшей формой многомерного массива является двумерный массив. Местоположение любого элемента в двумерном массиве обозначается двумя индексами. Такой массив можно представить в виде таблицы, на строки которой указывает один индекс, а на столбцы — другой.

    Если вам приходилось раньше программировать на С, С++ или Java, то будьте особенно внимательны, объявляя или организуя доступ к многомерным массивам в С#. В этих языках программирования размеры массива и индексы указываются в отдельных квадратных скобках, тогда как в С# они разделяются запятой.

    Задание

    Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз (в зависимости от введённого режима). n может быть больше количества элементов в строке или столбце.
    Решение

    Листинг (исходный код программы)

    using System;
    namespace _4

    {

    class Program

    {

    static void printMatrix(int[,] m)

    {

    for (int i = 0; i < m.GetLength(0); ++i)

    {

    for (int j = 0; j < m.GetLength(1); ++j)

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

    Console.WriteLine();

    }

    Console.WriteLine();

    }
    static void Main(string[] args)

    {

    int m = 4, n = 5;

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

    Random rand = new Random(DateTime.Now.Millisecond);

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

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

    matrix[i, j] = rand.Next(20);
    printMatrix(matrix);

    Console.Write("Куда будем сдвигать матрицу? (1 - вправо, 2 - вниз): ");

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

    Console.Write("На сколько будем сдвигать?: ");

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

    if (mode == 1)

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

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

    {

    var tmp = matrix[i, n - 1];

    for (var ij = n - 1; ij != 0; --ij) matrix[i, ij] = matrix[i, ij - 1];

    matrix[i, 0] = tmp;

    }

    else

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

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

    {

    var tmp = matrix[m - 1, i];

    for (var ij = m - 1; ij != 0; --ij) matrix[ij, i] = matrix[ij - 1, i];

    matrix[0, i] = tmp;

    }
    printMatrix(matrix);

    Console.Read();

    }

    }

    }

    Результат работы программы



    Рисунок 10 – Результаты работы программы
    1. Классы


    Цель: изучить основы объектно-ориентированного программирования на языке C#, получить практические навыки описания классов и их использования.

    Теоретические сведения

    Класс представляет собой шаблон, по которому определяется форма объекта. В нем указываются данные и код, который будет оперировать этими данными. В C# используется спецификация класса для построения объектов, которые являются экземплярами класса. Следовательно, класс, по существу, представляет собой ряд схематических описаний способа построения объекта. При этом очень важно подчеркнуть, что класс является логической абстракцией. Физическое представление класса появится в оперативной памяти лишь после того, как будет создан объект этого класса.

    Классы и структуры — это, по сути, шаблоны, по которым можно создавать объекты. Каждый объект содержит данные и методы, манипулирующие этими данными.

    При определении класса объявляются данные, которые он содержит, а также код, оперирующий этими данными. Если самые простые классы могут содержать только код или только данные, то большинство настоящих классов содержит и то и другое.

    Задание

    1. Описать класс с именем NOTE, содержащий следующие поля:

    • фамилия, имя;

    • номер телефона;

    • день рождения (массив из трех чисел).

    1. Написать программу, выполняющую следующие действия:

    • ввод с клавиатуры данных в массив, состоящий из 8-и объектов класса NOTE; записи должны быть размещены по алфавиту;

    • вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры;

    если таких нет, выдать на дисплей соответствующее сообщение.

    Решение

    Листинг (исходный код программы)

    Листинг файла Note.cs

    namespace _5

    {

    class Note

    {

    public string name;

    public string lastName;

    public string phoneNumber;

    public int[] birthday;
    public Note()

    {

    birthday = new int[3];

    }
    public override string ToString()

    {

    return string.Format($"{lastName} {name}, {birthday[0]}.{ birthday[1]}.{birthday[2]}, тел. {phoneNumber}");

    }

    }

    }

    Листинг файла Program.cs

    using System;

    using System.Collections.Generic;
    namespace _5

    {

    class Program

    {
    static void Main(string[] args)

    {

    Note[] notes = new Note[8];

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

    {

    notes[i] = new Note();

    Console.Write($"notes[{i}].Фамилия = ");

    notes[i].lastName = Console.ReadLine();

    Console.Write($"notes[{i}].Имя = ");

    notes[i].name = Console.ReadLine();

    Console.Write($"notes[{i}].Номер телефона = ");

    notes[i].phoneNumber = Console.ReadLine();

    Console.WriteLine($"notes[{i}].Дата рождения");

    Console.Write($"notes[{i}].День = ");

    notes[i].birthday[0] = int.Parse(Console.ReadLine());

    Console.Write($"notes[{i}].Месяц = ");

    notes[i].birthday[1] = int.Parse(Console.ReadLine());

    Console.Write($"notes[{i}].Год = ");

    notes[i].birthday[2] = int.Parse(Console.ReadLine());

    }
    Comparer comparer = Comparer.Create((first, second) =>

    {

    int cmp = first.lastName.CompareTo(second.lastName);

    if (cmp == 0)

    return first.name.CompareTo(second.name);

    return cmp;

    });

    Array.Sort(notes, comparer);
    Console.WriteLine();

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

    Console.WriteLine(notes[i].ToString());

    Console.WriteLine();
    Console.Write("Введите месяц: ");

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

    int cnt = 0;

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

    if (notes[i].birthday[1] == month)

    {

    Console.WriteLine(notes[i].ToString());

    ++cnt;

    }

    if (cnt == 0)

    Console.WriteLine("Не найдено совпадений по месяцам!");

    Console.Read();

    }

    }

    }

    Результат работы программы



    Рисунок 11 – Результат работы программы
    1. 1   2   3   4   5   6


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