Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/46: Рейтинг темы: голосов - 46, средняя оценка - 4.70
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
1

Теоритический вопрос

22.01.2010, 20:42. Показов 8793. Ответов 61
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
на форуме очень много задач по матрицам и массивам, я так понимаю их много задают в институтах...
вопрос собственно вот в чем, неужели они так важны? стоит ли тоже на это обратить внимание? действительно это часто применяется в практике?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2010, 20:42
Ответы с готовыми решениями:

Теоритический вопрос
У меня к вам такой вопрос: можно ли вызвать функцию в другой функции и как это сделать если это...

Теоритический вопрос по трансформатору.
Имеется трансформатор с двухполярным питанием 15-0-15 от него подключен усилитель, тоже с...

Теоритический вопрос по IP адресам
Имеется адрес 164.139.26.110 и Маска 11111111.11111111.11111111.00000000 надо определить: – класс...

Теоритический вопрос по блок схемам
Сделал программу (по ООП в программе 1 класс и четыре метода на каждый метод нужна блок схема) и...

61
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
28.01.2010, 19:55  [ТС] 21
Author24 — интернет-сервис помощи студентам
тогда не 2 мерные наверное а 3-х мерные?
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
то есть так примерно выглядить должно?... ну если б на бумаге)
0
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
28.01.2010, 22:04 22
Да, так. Но это 2у-мерный массив!
Но поле 3х3 в этой игре является вырожденным. Не интересно будет играть. Лучше сразу делать 5х5 или более.
1
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
03.02.2010, 19:21  [ТС] 23
Цитата Сообщение от body90 Посмотреть сообщение
Да, так. Но это 2у-мерный массив!
Но поле 3х3 в этой игре является вырожденным. Не интересно будет играть. Лучше сразу делать 5х5 или более.
блин, помоги с проверкой... я короче написал проверку, но она через Ифы у меня...все работает, но если добавлять еще больше реальзации, то ваще запутаешься... к томуже как то все сложно у меня получилось...
вот проект
Вложения
Тип файла: rar XandO.rar (38.7 Кб, 29 просмотров)
0
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
04.02.2010, 00:33 24
К сожалению, на данный момент я нахожусь в больнице и проект просто нет чем открыть. Надеюсь, к следующей неделе меня выпишут и я попробую найти время и помочь. А что именно у Вас не получилось реализовать?
0
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
04.02.2010, 02:32  [ТС] 25
Цитата Сообщение от body90 Посмотреть сообщение
К сожалению, на данный момент я нахожусь в больнице и проект просто нет чем открыть. Надеюсь, к следующей неделе меня выпишут и я попробую найти время и помочь. А что именно у Вас не получилось реализовать?
сочувствую и желаю скорейшего выздоровления!!!
реализовать то все получилось, вроде работает все как нужно, но слишком за мудрено как то вышло...
+ я хотел чтобы потом кнопки выигрышной комбинации стали красными, сделать то это не проблема, но если я начну это добавлять, то код получится ой какой запутанный и сложный... просто хотел спросить совета, может получится как то попроще это все сделать...
0
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
04.02.2010, 09:05 26
Огромное спасибо!

Я выше писал идею. Условно пронумеруйте каждый вариант выигрыша. А метод, который проверяет есть выигрыш или нет, пусть возвращает этот условный номер и в зависимости от этого числа делать красными определенные кнопки. Конечно, условий будет много, но их можно сделать через один свитч - будет на много удобнее и красивее. От проверок всё равно не избавиться.
1
5 / 5 / 0
Регистрация: 01.02.2010
Сообщений: 98
17.02.2010, 22:11 27
2 body90

А как вы решали оптимизационную задачу? Ведь выигрыш в игре - это фактически поиск наилучшего (устраивающего второго игрока - компьютер) решения. Вы использовали какой-либо минимаксный алгоритм или как-то иначе решали эту задачу?
0
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
19.02.2010, 15:47 28
Я сделал бОльшее ударение на сетевую игру. В игре с компьютером сделал небольшую логику отсюда:
http://ru.wikipedia.org/wiki/Крестики-нолики
0
5 / 5 / 0
Регистрация: 01.02.2010
Сообщений: 98
19.02.2010, 16:09 29
А, тут перебор просто вариантов ... а вообще, скорей всего можно сделать на базе нейронных сетей. Только это в шарпе давольно громоздко выдет, вот если бы подключить библиотеки Matlab'a...
0
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
19.02.2010, 16:16  [ТС] 30
громоздко это одно, будет ли работать быстрее??? ведь если взять поле 30х30, переборов ой сколько будет...
0
5 / 5 / 0
Регистрация: 01.02.2010
Сообщений: 98
19.02.2010, 16:38 31
На базе нейронных сетей - основное это обучить сеть, т.е. найти параметры целевой функции. А если простым перебором, то количество вариантов поля 30X30 можно посчитать прибегнув в комбинаторике
0
464 / 341 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
19.02.2010, 16:46 32
зачем нейронные сети, если тут и так логика небольшая?
0
5 / 5 / 0
Регистрация: 01.02.2010
Сообщений: 98
19.02.2010, 16:50 33
Вы про 3 на 3 поле или 30 на 30? Я понимаю, что перебором вариантов проще, но будет ли это "элегантным" решением... Ведь если поле 30 на 30, то тут придется, скорей всего, выделать основное поле в отдельные подргуппы, т.е. отдельные поля три на три (в зависимости от условия победы).
0
Заблокирован
19.02.2010, 18:14 34
Sequd , не много переделал твою прогу
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace XandO
{
    public partial class Form1 : Form
    {
        
        protected Button[] button = new Button[9];
        
        int allClick_ = -1;
        int _numb = -1;
 
        public int Numb
        {
            get { return _numb; }
            set { _numb = value; }
        }
 
        public Form1()
        {
            InitializeComponent();
            ButtonAdd();
        }
 
        
 
        public void ButtonAdd()
        {
            int _x = 10;
            int _y = 10;
            for (int i = 0; i < 3; i++)
            {
                _x += 50;
                button[i] = new Button();
                button[i].Name = Convert.ToString(i);
                button[i].Size = new System.Drawing.Size(50, 50);
                button[i].Location = new System.Drawing.Point(_x, _y);
 
                this.Controls.Add(button[i]);
            }
            _x = 10;
            for (int i = 3; i < 6; i++)
            {
                _y = 60;
                _x += 50;
                button[i] = new Button();
                button[i].Name = Convert.ToString(i);
                button[i].Size = new System.Drawing.Size(50, 50);
                button[i].Location = new System.Drawing.Point(_x, _y);
 
                this.Controls.Add(button[i]);
            }
            _x = 10;
            for (int i = 6; i < 9; i++)
            {
                _y = 110;
                _x += 50;
                button[i] = new Button();
                button[i].Name = Convert.ToString(i);
                button[i].Size = new System.Drawing.Size(50, 50);
                button[i].Location = new System.Drawing.Point(_x, _y);
 
                this.Controls.Add(button[i]);
            }
 
            for (int i = 0; i < button.Length; i++)
            {
                button[i].Click += new EventHandler(Form1_Click);
            }
        }
 
        void Form1_Click(object sender, EventArgs e)
        {
            Button temp = (Button)sender;
            temp.Enabled = false;
 
            for (int i = 0; i < button.Length; i++)
            {
                if (button[i] == temp)
                {
                    Numb = i;
                }
            }
 
            string str;
            allClick_++;
            if ((allClick_ % 2) == 0)
            {
                str = "X";
            }
            else
            {
                str = "O";
            }
            temp.Text = str;
 
            if (Controls["0"].Text == "X" && Controls["1"].Text == "X" && Controls["2"].Text == "X" ||
                Controls["3"].Text == "X" && Controls["4"].Text == "X" && Controls["5"].Text == "X" ||
                Controls["6"].Text == "X" && Controls["7"].Text == "X" && Controls["8"].Text == "X" ||
                Controls["0"].Text == "X" && Controls["3"].Text == "X" && Controls["6"].Text == "X" ||
                Controls["1"].Text == "X" && Controls["4"].Text == "X" && Controls["7"].Text == "X" ||
                Controls["2"].Text == "X" && Controls["5"].Text == "X" && Controls["8"].Text == "X" ||
                Controls["0"].Text == "X" && Controls["4"].Text == "X" && Controls["8"].Text == "X" ||
                Controls["2"].Text == "X" && Controls["4"].Text == "X" && Controls["6"].Text == "X")
            {
                label1.Text = "Выйгрыли крестики!!!";
                foreach (var control in this.Controls)
                {
                    Button B = control as Button;
                    if (B != null)
                    {
                        B.Enabled = false;
                    }
 
                }
            }
 
            if (Controls["0"].Text == "O" && Controls["1"].Text == "O" && Controls["2"].Text == "O" ||
                Controls["3"].Text == "O" && Controls["4"].Text == "O" && Controls["5"].Text == "O" ||
                Controls["6"].Text == "O" && Controls["7"].Text == "O" && Controls["8"].Text == "O" ||
                Controls["0"].Text == "O" && Controls["3"].Text == "O" && Controls["6"].Text == "O" ||
                Controls["1"].Text == "O" && Controls["4"].Text == "O" && Controls["7"].Text == "O" ||
                Controls["2"].Text == "O" && Controls["5"].Text == "O" && Controls["8"].Text == "O" ||
                Controls["0"].Text == "O" && Controls["4"].Text == "O" && Controls["8"].Text == "O" ||
                Controls["2"].Text == "O" && Controls["4"].Text == "O" && Controls["6"].Text == "O")
            {
                label1.Text = "Выйгрыли нолики!!!";
                foreach (var control in this.Controls)
                {
                    Button B = control as Button;
                    if (B != null)
                    {
                        B.Enabled = false;
                    }
 
                }
            }
 
        }
 
 
    }
}
0
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
19.02.2010, 18:34  [ТС] 35
да, так проверка гораздо лучше смотриться) спасибо! но вот зачем это? как это работает?
C#
1
2
3
4
5
6
7
                foreach (var control in this.Controls)
                {
                    Button B = control as Button;
                    if (B != null)
                    {
                        B.Enabled = false;
                    }
я так понимаю что это перебор контролов идет, но что там происходит не совсем понимаю...
0
5 / 5 / 0
Регистрация: 01.02.2010
Сообщений: 98
19.02.2010, 22:12 36
foreach (var control in this.Controls)
Происходит перебор, строка var control означает - что при переборе, нам необязательно/ненужно знать тип переменной control.

Button B = control as Button; as - это операция приведения типа, ну т.е. нам теперь нужно знать тип переменной control :-). Если проще: Приведи переменную control к типу Button

Ну и дальше доступ к члену кнопеи и установка его в false - т.е. делает ее недоступной
if (B != null)
{
B.Enabled = false;
}
0
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
20.02.2010, 00:59  [ТС] 37
C#
1
B != null
я вот этого не понимаю... как она может быть нолевой, тем более что мы их перебирали?
0
5 / 5 / 0
Регистрация: 01.02.2010
Сообщений: 98
20.02.2010, 02:14 38
2 Sequd
Условия захода в цикл, если выражение (B != null)=true. А вы до этого на чем писали? != (не равно) - это давольно распространеный бинарный оператор отношения.
0
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
20.02.2010, 02:56  [ТС] 39
я знаю что это такое, меня интересует почему null
0
4337 / 1506 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
20.02.2010, 03:49 40
Цитата Сообщение от Sequd Посмотреть сообщение
Button B = control as Button;
Если control нельзя привести к Button, то B будет равно null
0
20.02.2010, 03:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2010, 03:49
Помогаю со студенческими работами здесь

Солнечная энергия + акум + gsm (чисто теоритический вопрос)
Позволю себе пофантазировать: собираем девайс, который продолжительное время при помощи солнечных...

Теоритический вопрос.Чем отличаються функции ключевых слов public и protected при описании классов?
Не могу уловить разницы.Подскажите!:)

Теоритический вопро по матрицам.
Мне надо составить подпрограмму умножения двух матриц.{понятное дело не сложно} И используя её...

Вопрос по SetParent (поэтому, наверное, это вопрос к NickStaves)
Есть набор форм, назовём их 'интерфейсными'. Есть отдельная форма, назовём её 'хранилищем'. Сама...

[ВОПРОС]: Меню и вопрос при регистрации
Помогите пожалуйста. У меня vbulletin 4.0.7 и после установки в верхнем меню есть лишняя навигация....

Вопрос о картинках, вопрос о формулах
Всем доброго времени суток! Как обычно глупые вопросы... Вопрос первый, с сайта копируется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru