Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/75: Рейтинг темы: голосов - 75, средняя оценка - 4.68
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
1

Пространство имен уже содержит определение для класса

28.03.2017, 11:12. Показов 13975. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем!

Опишу свою проблему. Пишу дипломную работу, и в практической части мне нужно написать программную реализацию неокогнитрона. Решил взять эту тему, хотя, конечно, сомневался, смогу ли я написать программу...

Решил писать на C#. На данный момент создана форма, описаны интерфейсы нейронов и плоскостей. Интерфейсы нейронов реализовал с помощью наследования - класс-потомок Neuron и от него производные классы "SCell", "C", "Brake", "Lateral"(изначально назвал SNeuron, CNeuron, BrakeNeuron, LateralNeuron, но выдавало ошибку, которая в сабже, для первых трех классов). С плоскостями так же.

Однако, после переименования классов ошибка "Пространство имен уже содержит определение для класса" осталась. Что я не так делаю?

Вот список ошибок:

1>f:\landik\документы\visual studio 2012\Projects\Неокогнитрон\Неокогнитрон\Neuron.cs(124,18,124,19): error CS0101: Пространство имен "Неокогнитрон" уже содержит определение для "C"
1>f:\landik\документы\visual studio 2012\Projects\Неокогнитрон\Неокогнитрон\Neuron.cs(156,18,156,23): error CS0101: Пространство имен "Неокогнитрон" уже содержит определение для "Brake"
1>f:\landik\документы\visual studio 2012\Projects\Неокогнитрон\Неокогнитрон\SNeuron.cs(9,11,9,16): error CS0101: Пространство имен "Неокогнитрон" уже содержит определение для "SCell"

Добавлено через 3 минуты
Вот файл Neuron.cs, если что....правда, тут 260 строк:

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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Неокогнитрон
{
   public class Neuron
    {
        protected double[,] inputs;
        protected double synapse;
        protected double output;
 
        public Neuron()
        {
            inputs = new double[4, 4];
 
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    inputs[i, j] = 0;
 
            synapse = 0;
            output = 0;
        }
 
        public void setInputs(int a, int b, int c, int d, double[,] mas)
        {
            int k = 0;
            int n = 0;
 
            for (int i = a; i < b; i++)
            {
                for (int j = c; j < d; j++)
                {
                    inputs[k, n] = mas[i, j];
                    n++;
                }
 
                k++;
                n = 0;
            }
        }
 
        public double[,] getInputs()
        {
            return inputs;
        }
 
        public double getSynapse()
        {
            return synapse;
        }
    };
 
    public class SCell : Neuron
    {
        private double[,] SSynapses;
        private double lateralSynapse;
 
        public SCell()
        {
            lateralSynapse = 0;
 
            SSynapses = new double[4, 4];
 
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    SSynapses[i, j] = 0;
        }
 
        public void setSSynapses(int a, int b, int c, int d, double[,] mas)
        {
            int k = 0;
            int n = 0;
 
            for (int i = a; i < b; i++)
            {
                for (int j = c; j < d; j++)
                {
                    SSynapses[k, n] = mas[i, j];
                    n++;
                }
 
                k++;
                n = 0;
            }
        }
 
        public void setLateralSynapse(double num)
        {
            lateralSynapse = num;
        }
 
        public double getLateralSynapse()
        {
            return lateralSynapse;
        }
 
        public double getSOutput(double num1, double num2, double output1, double output2)
        {
            double E = 0;
            double I = 0;
 
            double NET = 0;
 
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    E += (SSynapses[i, j] * inputs[i, j]);
 
            I = ((num1 * output1) + (num2 * output2));
 
            NET = (((1 + E) / (1 + I)) - 1);
 
            if (NET > 0)
                output = NET;
            else
                output = 0;
 
            return output;
        }
    }
 
    public class C : Neuron
    {
        private double cSynapse;
 
        public void setCSynapse(double num)
        {
            cSynapse = num;
        }
 
        public double getCOutput()
        {
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    if (inputs[i, j] > 0)
                    {
                        output = 1;
                        break;
                    }
            return output;
        }
 
        public void startChangeCSynapse(double q1, double syn, double outp)
        {
            synapse = (q1 * syn * outp);
        }
 
        public void ChangeCSynapse(double q, double syn, double outp)
        {
            synapse = (q * syn * outp);
        }
    }
 
    public class Brake : Neuron
    {
        private double[,] BSynapses;
 
        public Brake()
        {
            BSynapses = new double[4, 4];
 
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    BSynapses[i, j] = 0;
        }
 
        public void setBSynapses(int a, int b, int c, int d, double[,] mas)
        {
            int k = 0;
            int n = 0;
 
            for (int i = a; i < b; i++)
            {
                for (int j = c; j < d; j++)
                {
                    BSynapses[k, n] = mas[i, j];
                    n++;
                }
 
                k++;
                n = 0;
            }
        }
 
        public double getBOutput()
        {
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    output += Math.Pow((BSynapses[i, j] * inputs[i, j]), 2);
 
            return Math.Sqrt(output);
        }
 
        public void startChangeBSynapse(double q)
        {
            synapse = (q * output);
        }
 
        public void changeBSynapse(double q)
        {
            double sum = 0;
 
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    sum += (BSynapses[i, j] * inputs[i, j]);
 
            synapse = ((q * sum) / (2 * output));
        }
    }
 
    public class Lateral : Neuron
    {
        private double[,] LSynapses;
        private double lInhib;
 
        public Lateral()
        {
            lInhib = 0;
            LSynapses = new double[4, 4];
 
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    LSynapses[i, j] = 0;
        }
 
        public void setLSynapses(int a, int b, int c, int d, double[,] mas)
        {
            int k = 0;
            int n = 0;
 
            for (int i = a; i < b; i++)
            {
                for (int j = c; j < d; j++)
                {
                    LSynapses[k, n] = mas[i, j];
                    n++;
                }
 
                k++;
                n = 0;
            }
        }
 
        public void setLInhib()
        {
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++)
                    lInhib += (LSynapses[i, j] * inputs[i, j]);
        }
 
        public double getLOutput(double num)
        {
            output = (((1 + num) / (1 + lInhib)) - 1);
 
            return output;
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2017, 11:12
Ответы с готовыми решениями:

Можно ли импортировать пространство имен Console, чтобы в коде уже не указывать
Простите за вопрос. К примеру можно ли это... using System; namespace HelloS { public...

Пространство имен для работы с virtual WiFi
есть ли пространство имен для работы с virtual WiFi?

Ошибка: "не удается найти имя типа или пространство имен Shed" при использовании класса
Я начал с книги фленова. Фленов М. - Библия С#. 2-е издание - 2011. Но Книга написано слишком...

Пространство имен
Добрый день. Стоит у меня VS Express 2010, MS Server 2008, SQL Management Studio Express 2008. Пишу...

10
Эксперт .NET
12287 / 8639 / 1307
Регистрация: 21.01.2016
Сообщений: 32,521
28.03.2017, 11:13 2
Sh@dow777, значит у тебя в коде где-то определены несколько классов\стурктур\интерфейсов с одним и тем же именем.
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
28.03.2017, 11:23  [ТС] 3
Usaga, Я проверял несколько раз. В трех файлах нет ни одного одинакового имени. Я прочитал, что ошибка появляется даже если имена не одинаковые, но частично совпадают. Например, SNeuron - Neuron. Поэтому переименовал классы. Но ошибки остались.
0
Эксперт .NET
12287 / 8639 / 1307
Регистрация: 21.01.2016
Сообщений: 32,521
28.03.2017, 11:28 4
Sh@dow777, компилятор вам говорит, что имена где-то с чем-то совпадают. Он - робот, ему виднее. В примере кода выше определены классы, на которые жалуется компилятор. Видимо они и в отдельных файлах тоже есть.
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
28.03.2017, 11:39  [ТС] 5
Usaga, Вот, взгляните. Файл Plane.cs(плоскости):

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Неокогнитрон
{
    class Plane
    {
        protected double[,] outputs;
 
        public Plane()
        {
            outputs = new double[12, 12];
 
            for (int i = 0; i < 12; i++)
                for (int j = 0; j < 12; j++)
                    outputs[i, j] = 0;
        }
    }
 
    class Simple : Plane
    {
        public SCell[,] sNeurons;
        public Lateral[,] lNeurons;
        
        public Simple()
        {
            sNeurons = new SCell[12, 12];
            lNeurons = new Lateral[12, 12];
        }
    }
 
        class Complex : Plane
        {
            public C[,] cNeurons;
            public Brake[,] bNeurons;
 
            public Complex()
            {
                cNeurons = new C[12, 12];
                bNeurons = new Brake[12, 12];
            }
        }
}
Файл Form1(метод Neocognitron еще далеко не закончен... это я прежде, чем реализовывать алгоритм и само обучение, решил запустить программу, и получил свои чудесные ошибки...):

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Неокогнитрон
{
    public partial class Form1 : Form
    {
        Bitmap image;
 
        public double[,] pixels;
 
        public void printing()
        {
            int var;
            int n = image.Width;
            int m = image.Height;
 
            pixels = new double[n, m];
 
            for (int k = 0; k <= 11; k++)
                listBox1.Items.Add(" ");
 
            for (int i = 0; i <= 11; i++)
                for (int j = 0; j <= 11; j++)
                {
                    var = image.GetPixel(i, j).R;
                    if (var >= 250)
                        var = 0;
                    else
                        var = 1;
 
                    pixels[i, j] = var;
 
                    listBox1.Items[j] = listBox1.Items[j] + "  " + Convert.ToString(var);
                }
        }
 
        public void Neocognitron(double[,] array)
        {
            Simple[,] splanes;
            Complex[,] cplanes;
 
            double[,] sOutputs;
            double[,] lOutputs;
            double[,] cOutputs;
            double[,] bOutputs;
 
            double[,] lSynapses;
            double[,] cSynapses;
            double[,] bSynapses;
 
            double q = 10;
            double q1 = 5;
 
            int layers = 4;
            int epochs = 100;
            int i, j;
 
            splanes = new Simple[4, 12];
            cplanes = new Complex[4, 12];
 
            sOutputs = new double[12, 12];
            lOutputs = new double[12, 12];
            cOutputs = new double[12, 12];
            bOutputs = new double[12, 12];
 
            lSynapses = new double[12, 12];
            cSynapses = new double[12, 12];
            bSynapses = new double[12, 12];
        }
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
 
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                image = new Bitmap(openFileDialog1.FileName);
                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                pictureBox1.Image = image;
                pictureBox1.Invalidate();
            }
 
            printing();
        }
    }
}
Одинаковых имен нет...либо я слепой.
0
Эксперт .NET
12287 / 8639 / 1307
Регистрация: 21.01.2016
Сообщений: 32,521
28.03.2017, 11:47 6
Sh@dow777, причём здесь эти файлы? Компилятор говорит вам про конкретные классы в Neuron.cs, что они уже в другом месте объявлены и определены. В другом файле, или в библиотеке.
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
28.03.2017, 11:50  [ТС] 7
Usaga, Так что вы мне посоветуете сделать? Просто подбирать разные имена?
0
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
28.03.2017, 11:51 8
господи, просто скиньте проект, мы почитаем а потом ткнём вас носом туда, где ошибка, что за гадание по логам?
0
Эксперт .NET
12287 / 8639 / 1307
Регистрация: 21.01.2016
Сообщений: 32,521
28.03.2017, 11:53 9
Sh@dow777, я просто надеялся, что вы достаточно сообразительны, чтобы в своём коде разобраться и понять, где и что и сколько раз объявили.

Добавлено через 1 минуту
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Просто подбирать разные имена?
Ну, как бы, да. Или разносить по разным пространствам имён. Или вы думаете компилятор сам догадается, какой класс вы имеете в виду, если у вас куча их с одним и тем же именем и в одном пространстве имён?
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
28.03.2017, 12:13  [ТС] 10
Все, разобрался. Забыл, что до реализации наследования писал эти классы в отдельных файлах, и забыл эти файлы удалить. Обозреватель решений помог.

Spectral-Owl,

Не по теме:

Не стОит так отвечать) Я ж вроде ничего плохого вам не сказал, да и не тупой я...просто кратковременное помутнение мозгов...со всеми ж бывает.



Добавлено через 2 минуты
Usaga, А вам спасибо
0
Spectral-Owl
28.03.2017, 13:07     Пространство имен уже содержит определение для класса
  #11

Не по теме:

Sh@dow777, да вроде ничего обидного не писал, если что - звиняйте. Просто наискорейшее решение вашей проблемы, с небольшим утомлением тем, что диалог идёт об одном и том же уже шестой пост) Удачи.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2017, 13:07

пространство имен
Кто-нибудь знает какие using System. надо использовать для этого? windows =...

Пространство имен
using namespace System; using namespace System::Collections; using namespace...

Пространство имен
Народ, понимаю, что вопрос тупой, и заранее прошу за это прощения, но какое пространство имен нужно...

Пространство имен
Как собственно сделать что бы &quot;string ch = my.change + &quot;.txt&quot;;&quot; было что я написал, а не...


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

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