Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2018, 15:08   #1
Deyner
 
Регистрация: 24.03.2018
Сообщений: 4
По умолчанию Доработка кода программы

Помогите доработать код. Код не выводит значения в консоль, она сразу же закрывается. Знаю, что нужно добавить Console.WriteLine(); / Console.ReadLine();
Код:
namespace ConsoleApp1
{
public class Program
{
static void Main(string[] args)
{
var dic = new CustomDic<string, Озеро>();
dic.Add("Байкал", new Озеро { Глубина = 1, Название = "Байкал", Площадь = 2 });
dic.Add("Синевир", new Озеро { Глубина = 2, Название = "Синевир", Площадь = 3 });
dic.Remove("Байкал");
}
}

public class Озеро
{
public string Название { get; set; }

public int Глубина { get; set; }

public int Площадь { get; set; }
}

public class HashElement<K, T>
{
public K Key { get; private set; }

public T Value { get; private set; }

public HashElement(K key, T value)
{
Key = key;
Value = value;
}
}

public class CustomDic<K, T>
where K : IComparable
{
private HashElement<K, T>[] arr;
private int index;


public CustomDic(int count = 4)
{
if (count < 1)
throw new ArgumentException("неверный базовый размер", "count");
arr = new HashElement<K, T>[count];
index = 0;
}

public void Add(K key, T value)
{
if (arr.Any(x => x?.Key.CompareTo(key) == 0))
throw new ArgumentException("такой ключ уже есть");

if (index == int.MaxValue)
throw new OverflowException("слишком много элементов");
arr[index] = new HashElement<K, T>(key, value);
while (index < arr.Length && arr[index] != null)
index++;
if (index > arr.Length && index != int.MaxValue)
{
var newSize = unchecked(arr.Length * 2);
if (newSize < 0)
newSize = int.MaxValue;
Array.Resize(ref arr, newSize);
}
}

public void Remove(K key)
{
for (var i = 0; i < arr.Length; i++)
{
if (arr[i]?.Key.CompareTo(key) == 0)
{
arr[i] = null;
index = Math.Min(index, i);
}
}
}

public T this[K ключ] => arr.First(x => x?.Key.CompareTo(ключ) == 0).Value;
}
}

Последний раз редактировалось Deyner; 15.04.2018 в 17:44.
Deyner вне форума Ответить с цитированием
Старый 15.04.2018, 15:10   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Deyner Посмотреть сообщение
Знаю, что нужно добавить Console.WriteLine(); / Console.ReadLine();
дык добавьте.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.04.2018, 15:31   #3
Deyner
 
Регистрация: 24.03.2018
Сообщений: 4
По умолчанию

У меня не выходит, добавляю Console.WriteLine(); / Console.ReadLine(); , но консоль остается пустой. Помогите доработать код, чтоб все работало как нужно
Deyner вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработка кода mogo C# (си шарп) 12 18.02.2014 02:04
Доработка VBA кода MaxxVer Microsoft Office Excel 6 19.04.2012 15:38
Доработка кода авторизации Fastah БД в Delphi 1 22.03.2011 12:25
Доработка кода авторизации Fastah Помощь студентам 7 22.03.2011 11:45
С++ нужна корректировка\доработка кода. Akmall Помощь студентам 3 10.12.2010 22:51