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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2010, 21:23   #1
Gogent
Пользователь
 
Регистрация: 12.07.2010
Сообщений: 46
По умолчанию Проблема в коде, C#

Здраствуйте! Помогите пожалуйста! У кого есть время, проверьте код пожалуйста. При его запуске приложение зависает, в диспетчере задач появляется статус "не отвечает". Вот код:

Код:
public void Encrypt(string _toEncrypt, TextBox tb)
        {
            string toEncrypt = _toEncrypt;
            string yui = ""; int tyu = 0;                        
            string[, ,] grids = new string[5, 16, 16];
            grids = new MethodsForGrids().Create5Grids();
            IDictionary<string, string> klues = new Dictionary<string, string>();
            string[] strings = new string[toEncrypt.Length];
            string[] params_ = new string[3];
            for (int i = 0; i < toEncrypt.Length; i++)
            {
                strings[i] = toEncrypt.Substring(i, 1);
            }
            string str = "";
            foreach (string s in strings)
            {
                tyu = 1;
            loop:
                yui = "1";    
                for (int i = 0; i < 5; i++)
                {
                    for (int t = 0; t < 16; t++)
                    {
                        for (int z = 0; z < 16; z++)
                        {
                            if (s == grids[i, t, z])
                            {
                                if (klues.ContainsKey(s)&&tyu==1)
                                {
                                    string asdf = klues[s];
                                    params_ = asdf.Split(',');
                                    i = int.Parse(params_[0]);
                                    t = int.Parse(params_[1]);
                                    z = int.Parse(params_[2]);
                                    tyu = 0;
                                    continue;
                                }
                                string bc = i.ToString()+ "," +t.ToString() +","+ z.ToString();
                                string ab = "["+t.ToString() +","+ z.ToString()+"]";
                                str = str + ab;
                                if (!klues.ContainsKey(s))
                                {
                                    klues.Add(s, bc);
                                }                               
                                yui = "";
                                goto poop;
                            }
                        }
                    }            
                }
                if (yui != "")
                {
                    klues[s] = "0,0,0";
                    goto loop;
                }
            poop:
                if (toEncrypt != "")//это чтоб метка poop: не вызывала ошибки, другого смысла нет
                {
                }
            }
            tb.Text = str;
        }
Вот еще метод(который внутри был)

Код:
 public string[,,] Create5Grids()
        {
            StreamWriter sw = new StreamWriter("experiment.txt", true);
            string[,,] oneGrid = new string[5,16, 16];
            D2 [] abc = new D2 [5];
            Queue<string>  finLetterGrid = CreateLetterGrid();
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 16; j++)
                {
                    for (int z = 0; z < 16; z++)
                    {
                        string temp = finLetterGrid.Dequeue();
                        oneGrid[i, j, z] = temp;
                        finLetterGrid.Enqueue(temp);
                    }
                }
                string qw = finLetterGrid.Dequeue();
                string qwe = finLetterGrid.Dequeue();
                string qwer = finLetterGrid.Dequeue();
                finLetterGrid.Enqueue(qw);//каждый раз смещается на 3
                finLetterGrid.Enqueue(qwe);
                finLetterGrid.Enqueue(qwer);
            }
            return oneGrid;
        }

public Queue<string> CreateLetterGrid()
        {
            Queue<string> letters = new Queue<string> { };
            letters.Enqueue("a"); letters.Enqueue("b"); //еще куча символов и букв
 letters.Enqueue(">"); letters.Enqueue("%");
            return letters;
        }

Последний раз редактировалось Stilet; 13.08.2010 в 08:19.
Gogent вне форума Ответить с цитированием
Старый 12.08.2010, 23:29   #2
badboychik
Пользователь
 
Регистрация: 08.08.2010
Сообщений: 21
По умолчанию

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

Цитата:
goto poop;
ты в своем уме? какие нахрен метки?! За такое надо руки вырывать!

Последний раз редактировалось Stilet; 13.08.2010 в 08:20.
badboychik вне форума Ответить с цитированием
Старый 13.08.2010, 13:37   #3
Gogent
Пользователь
 
Регистрация: 12.07.2010
Сообщений: 46
По умолчанию

Насчет дебаггера, спасибо, почему-то подумал, что раз глюк, то дебаг не поможет. Сейчас проверю.
А насчет меток: как я иначе сразу из трех циклов сразу выйду???

И еще: какой есть метод, чтобы в Dictionary назначить значение элементу, а не ключ?

Последний раз редактировалось Stilet; 16.08.2010 в 08:38.
Gogent вне форума Ответить с цитированием
Старый 13.08.2010, 16:31   #4
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Gogent Посмотреть сообщение
Насчет дебаггера, спасибо, почему-то подумал, что раз глюк, то дебаг не поможет. Сейчас проверю.
А насчет меток: как я иначе сразу из трех циклов сразу выйду???
Создашь 1 дополнительную переменную типа Boolean и внесешь доп проверку в условие циклов...

Цитата:
Сообщение от Gogent Посмотреть сообщение
И еще: какой есть метод, чтобы в Dictionary назначить значение элементу, а не ключ?
Если честно, не совсем понял, что вам нужно, может свойство Item??

Последний раз редактировалось mMAg; 13.08.2010 в 16:44.
mMAg вне форума Ответить с цитированием
Старый 13.08.2010, 22:38   #5
Gogent
Пользователь
 
Регистрация: 12.07.2010
Сообщений: 46
По умолчанию

Нет, такого свойства я не нашел.

IDictionary<string, string> klues = new Dictionary<string, string>();
klues[s] = "0,0,0"; //этот код у меня ошибку вызывает

(почему то без точки останова был глюк, а не ошибка), он изменяет ключ соответствующий значению s. А мне нужно, чтоб изменялось значение соответствующее ключу
Gogent вне форума Ответить с цитированием
Старый 13.08.2010, 23:19   #6
badboychik
Пользователь
 
Регистрация: 08.08.2010
Сообщений: 21
По умолчанию

string key = "ключ";
klues[key] = "значение";
что такое s?

Документацию почему не читаем?
badboychik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема в коде регистрации vanka_32 PHP 7 24.02.2010 02:12
Замена в коде Crab2 Общие вопросы C/C++ 4 13.02.2010 00:26
ошибка в коде Си Misha_M. Помощь студентам 2 05.02.2010 15:41
проблема в коде GPSS Crazy D0G Помощь студентам 0 23.01.2010 16:00
Математические расчеты. Проблема в коде. Розочка Паскаль, Turbo Pascal, PascalABC.NET 2 15.09.2009 15:01