Пример #1
0
        static void Main(string[] args)
        {
            OAHashtable <int, int> table = new OAHashtable <int, int>();

            table.Add(1, 1);
            table.Add(10, 10);
        }
Пример #2
0
        static void OA_Hashtbale_test()
        {
            OAHashtable <string, string> table = new OAHashtable <string, string>();
            bool quit = false;

            while (!quit)
            {
                Console.WriteLine($"Хеш-таблица: ({table.Fullness})");
                foreach (var pair in table)
                {
                    Console.WriteLine($"{pair.Key}, {pair.Value}");
                }
                Console.WriteLine();
                Console.WriteLine("1) Добавить");
                Console.WriteLine("2) Удалить");
                Console.WriteLine("0) Выйти");
                switch (Console.ReadKey(true).Key)
                {
                case ConsoleKey.D1:
                    Console.Clear();
                    Console.Write("Ключ: ");
                    string key = Console.ReadLine();
                    Console.Write("Значение: ");
                    string value = Console.ReadLine();
                    table.Add(key, value);
                    Console.Clear();
                    break;

                case ConsoleKey.D2:
                    Console.Clear();
                    Console.Write("Ключ: ");
                    string del = Console.ReadLine();
                    table.Delete(del);
                    Console.Clear();
                    break;

                case ConsoleKey.D0:
                    quit = true;
                    break;

                default:
                    Console.Clear();
                    break;
                }
            }
        }
Пример #3
0
        private void LoadFile()
        {
            OpenFileDialog openDialog = new OpenFileDialog();

            openDialog.Filter = "Справочник (*.txt)|*.txt";
            //openDialog.InitialDirectory = "C:\\Users\\mi\\source\\repos\\2-Course-Work\\saves";
            openDialog.InitialDirectory = Path.Combine(new FileInfo(Application.ExecutablePath).DirectoryName);
            DialogResult result = openDialog.ShowDialog();
            string       line   = "";

            string[] cells;
            int      index;

            if (result == DialogResult.OK)
            {
                StreamReader reader;
                try
                {
                    reader = new StreamReader(openDialog.FileName);
                }
                catch (Exception)
                {
                    UpdateInfo("Ошибка при открытии файла");
                    return;
                }
                ClearAllStructures();
                try
                {
                    while (!reader.ReadLine().StartsWith("#"))
                    {
                        ;
                    }
                    line = reader.ReadLine();
                    while (!line.StartsWith("#")) // чтение название - жанр
                    {
                        line = CleanString(line);
                        if (line.StartsWith("#"))
                        {
                            continue;
                        }
                        cells = line.Replace(' ', '%').Replace('_', ' ').Split('%');
                        foreach (var word in cells)
                        {
                            if (HasIncorrectSymbols(word))
                            {
                                throw new FormatException();
                            }
                        }
                        if (cells.Length != 2)
                        {
                            throw new IndexOutOfRangeException();
                        }
                        index = NameGenreTable.Rows.Add(cells);
                        NameGenreHT.Add(cells[0], NameGenreTable.Rows[index]);
                        line = reader.ReadLine();
                    }

                    while (!reader.ReadLine().StartsWith("#"))
                    {
                        ;
                    }
                    line = reader.ReadLine();
                    while (!line.StartsWith("#")) // чтение название - автор
                    {
                        line = CleanString(line);
                        if (line.StartsWith("#"))
                        {
                            continue;
                        }
                        cells = line.Replace(' ', '%').Replace('_', ' ').Split('%');
                        foreach (var word in cells)
                        {
                            if (HasIncorrectSymbols(word))
                            {
                                throw new FormatException();
                            }
                        }
                        if (cells.Length != 2)
                        {
                            throw new IndexOutOfRangeException();
                        }
                        if (NameGenreHT.Contains(cells[0]))
                        {
                            structureForm.Name_comboBox.Items.Add(cells[0]);
                        }
                        index = NameAuthorTable.Rows.Add(cells);
                        NameAuthorHT.Add(cells[0], NameAuthorTable.Rows[index]);
                        line = reader.ReadLine();
                    }

                    while (!reader.ReadLine().StartsWith("#"))
                    {
                        ;
                    }
                    line = reader.ReadLine();
                    while (!line.StartsWith("#")) // чтение структуры
                    {
                        line = CleanString(line);
                        if (line.StartsWith("#"))
                        {
                            continue;
                        }
                        cells = line.Replace(' ', '%').Replace('_', ' ').Split('%');
                        foreach (var word in cells)
                        {
                            if (HasIncorrectSymbols(word))
                            {
                                throw new FormatException();
                            }
                        }
                        if (cells.Length != 5)
                        {
                            throw new IndexOutOfRangeException();
                        }
                        if (!NameGenreHT.Contains(cells[0]) || !NameAuthorHT.Contains(cells[0]))
                        {
                            throw new ArgumentException();
                        }
                        index = StructureTable.Rows.Add(cells);
                        YearTree.Add(int.Parse(cells[4]), StructureTable.Rows[index]);
                        PublisherTree.Add(cells[3], StructureTable.Rows[index]);
                        NameTree.Add(cells[0], StructureTable.Rows[index]);
                        line = reader.ReadLine();
                    }

                    reader.Close();
                    saved = true;
                    UpdateInfo("Файл успешно загружен");
                }
                catch (ArgumentException)
                {
                    ClearAllStructures();
                    UpdateInfo("Файл не загружен. Целостность справочников нарушена");
                    return;
                }
                catch (FormatException)
                {
                    ClearAllStructures();
                    UpdateInfo("Ошибка при чтении файла. Файл содержит недопустимые символы");
                    return;
                }
                catch (Exception)
                {
                    ClearAllStructures();
                    UpdateInfo("Ошибка при чтении файла. Файл имеет неверный формат");
                    return;
                }
            }
        }