Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
15.01.2021
Размер:
146.43 Кб
Скачать

113

Лабораторна робота № 7 Універсальні класи-колекції c#

Хеш-таблиці

1. Мета роботи: вивчення методів роботи з універсальними колекціями

17.1. Клас SortedList<TKey,TValue> - відсортований список

17.2. Клас Dictionary<TKey,TValue> - словник

17.3. Клас SortedDictionary<TKey,TValue> - відсортований словник

Методичні рекомендації до виконання лабораторної роботи

1. Уважно прочитайте лекцію 8 та цю лабораторну роботу.

2. Виконайте і проаналізуйте всі наведені в лекції приклади.

Приклад.

Створити колекцію SortedList об’єктів класу Student. Заповнити колекцію даними з текстового файлу. Додати ще 2 елементи. Вивести на консоль. Перевірити, чи є елемент з ключем 4. Якщо є, видалити його з колекції.

Клас Student. В класі 3 конструктори.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Lab9_SortedList

{

class Student

{

//Властивості

public int Id {get; set;}

public string FistName { get; set; } //ім'я

public string LastName { get; set; } //прізвище

public string Role { get; set; } // роль

public int Course { get; set; }

public int Rating { get; set; }

public Student(int Id, string f, string n, int cource, int rating, string r)

{

//конструктор для ініціалізації об’єктів в коді

this.Id=Id;

FistName=f;

LastName=n;

Role=r;

Course=cource;

Rating=rating;

}

public Student(string s)

{

//конструктор для ініціалізації об’єктів з файлу

string[] split = s.Split(new Char[] { '*' });

Id = int.Parse(split[0].Trim());

FistName = split[1].Trim();

LastName = split[2].Trim();

Course = int.Parse(split[3].Trim());

Rating = int.Parse(split[4].Trim());

Role = split[5].Trim();

}

public Student()

{

//конструктор тільки для створення колекції

}

public string GetRole(int course)

{

if (course <= 4)

Role = "бакалавр";

else

Role = "магістр";

return Role;

}

public void St_Rating(int student_rating)

{

if (student_rating >= 82)

Console.WriteLine("Привіт відмінникам");

else

if (student_rating <= 45)

Console.WriteLine("Перездача! Треба краще вчитися!");

else

Console.WriteLine("Можна вчитися ще краще!");

}

}

}

Код програми

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace Lab9_SortedList

{

class Program

{

static void Main(string[] args)

{

SortedList<int, Student> List_SI_51 = new SortedList<int, Student>();

string s;

int Id;

string[] split;

StreamReader f = new StreamReader("TextListStudents.txt");

while ((s = f.ReadLine()) != null)

{

split = s.Split(new Char[] { '*' }); // розбивка на слова

Id = int.Parse(split[0].Trim()); //виділення ключа

List_SI_51.Add(Id, new Student(s)); //заповнення колекції

}

f.Close();

//додаємо 2 елементи

List_SI_51.Add(3, new Student(3, "Д’яченко", "Валерій",2,76, "бакалавр"));

List_SI_51.Add(4, new Student(4, "Ніколаєв", "Андрій", 2, 65, "бакалавр"));

foreach (KeyValuePair<int, Student> kvp in List_SI_51)

{

Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value.FistName);

}

if (List_SI_51.ContainsKey(4)) // перевірка чи є в колекції елемент з ключем 4

List_SI_51.Remove(4); //якщо є - видаляємо його

Console.WriteLine("Після видалення елемента з ключем 4");

foreach (KeyValuePair<int, Student> kvp in List_SI_51)

{

Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value.FistName);

}

Console.ReadKey();

}

}

}

Текстовий файл TextListStudents.txt

1*Базяк *Валентин*2*65*бакалавр*

2*Кириченко *Станіслав*2*60*Бакалавр*