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

Помогите найти ошибку в коде

08.11.2011, 22:22. Показов 1058. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу понять где ошибка в коде и почему не строится нормально матрица.
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
class Program
    {
        static void Main(string[] args)
        {
            double[] znachen, obuch, proc;
            // znachen - Исходные значения
            znachen = new double[] {};
 
            //Считаем процентное измененние
            proc = new double[znachen.Length-1];
                   
            for (int i = 0; i < proc.Length; i++) 
                proc[i] = (znachen[i] / znachen[i+1] - 1) * 100;
 
                                              
            obuch = new double[200];  // Обучающая выборка
 
            for (int i = 200, y = 0; i > 0; i--, y++)
                obuch[y] = proc[proc.Length - i];
 
            // Находим max и min obuch[], а так же количество значений(colznach) в пределах которого ои изменяется
            int max = (int) (obuch.Max()+1), min = (int) (obuch.Min()-1);
            int predel = max+Math.Abs(min);
            Console.WriteLine("MAX: "+max + "  "+obuch.Max() +" MIN:  "+ min+"   "+obuch.Min()+ " PREDEL " +predel);
            int colznach = (int)((predel / 35)+1);
            Console.WriteLine("COLICH ZNACHEN: "+colznach);
            
            // Интервал между min и max с учётом количествва значений
            decimal[] interval = new decimal[colznach]; 
            interval[0]=min;
            decimal up;
            up = 35m;
            for (int i = 1; i < colznach; i++) // Заполняем массив
                interval[i] = interval[i - 1] + up;
 
            // Двумерный массив и его заполнения
            double[,] arg = new double[colznach, colznach];  // Двумерный массив и его заполнение
            int sum = 0 ;
            for (int i = 0; i < colznach-1; i++)    // Строки
            {
                Console.Write("Построение строки {0}: ", i);
                for (int y = 0; y < colznach-1; y++)  // Столбцы
                {
                    for (int z = 0; z < obuch.Length-1; z++) // Индекс обучающей выборки(Вот этот блок инструкции я не могу понять как реализовать и почему 
                                                             // получаются нули)
                    {
                        if ((obuch[z + 1] >= (double)(interval[i])) & (obuch[z + 1] < (double)(interval[i + 1])))
                        {
                            if ((obuch[z] >= (double)(interval[y])) & (obuch[z] < (double)(interval[y + 1])))
                                sum++;
                        }                        
                    }
                    arg[i, y] = sum / obuch.Length;
                }
                Console.WriteLine("Окончено.");
            }
            // Вывод середины массива
            for (int i = (int)((colznach / 2) - (colznach * 0.2)); i <= (int)((colznach / 2) + (colznach * 0.2)); i++)
            {
                for (int u = (int)((colznach / 2) - (colznach * 0.2)); u <= (int)((colznach / 2) + (colznach * 0.2)); u++)
                {
                    Console.Write(arg[i, u] + " ");
                }
                Console.WriteLine();
            }
        }
    }
P.S. Прилагаю проект, поскольку там, в массиве, указаны исходные значения.
Вложения
Тип файла: rar ConsoleApplication7.rar (34.3 Кб, 15 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2011, 22:22
Ответы с готовыми решениями:

Помогите найти ошибку в коде
всем привет помогите найти ошибку в коде а чет сам не как ВОД КОД; using System; using...

Помогите найти ошибку в коде со StreamWriter
помогите, пожалуйста, найти ошибку в 6-ой строчке куска кода private void btSave_Click(object...

Помогите найти ошибку в коде определения простого числа
Всем привет) в общем задача такая, Дано целое число N. Для каждого из N целых чисел, вводимых с...

Помогите исправить ошибку в коде
class Program { public static void Main(string arr) { ...

2
Эксперт .NET
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,223
08.11.2011, 22:36 2
Проблема в том, что не проходит вот это условие:
C#
1
if ((obuch[z] >= (double)(interval[y])) & (obuch[z] < (double)(interval[y + 1])))
Почему оно не проходит - не знаю, т.к. понятия не имею о реализуемом алгоритме.
0
6 / 6 / 4
Регистрация: 27.05.2010
Сообщений: 48
08.11.2011, 23:12  [ТС] 3
Я пробовал массивы obuch и proc сделать типа decimal. Тем самым подстроить под interval, чтобы убрать явное приведение типов. Но результат всё равно тот же.

Почему оно не проходит - не знаю, т.к. понятия не имею о реализуемом алгоритме.
Это марковские цепи. Я здесь вчера задавал вопрос, но никто не ответил Видимо не достаточно понятно пояснил суть проблемы.
Вот эта страница текста(вложение) должна прояснить суть алгоритма.
А блок кода
C#
1
2
3
4
5
6
7
8
9
10
                    for (int z = 0; z < obuch.Length-1; z++) // Индекс обучающей выборки(Вот этот блок инструкции я не могу понять как реализовать и почему 
                                                             // получаются нули)
                    {
                        if ((obuch[z + 1] >= (double)(interval[i])) & (obuch[z + 1] < (double)(interval[i + 1])))
                        {
                            if ((obuch[z] >= (double)(interval[y])) & (obuch[z] < (double)(interval[y + 1])))
                                sum++;
                        }                        
                    }
                    arg[i, y] = sum / obuch.Length;
Является способом отнесения к конкретному событию. Где кочка, лист, вода являются значениями массива interval.
Миниатюры
Помогите найти ошибку в коде  
0
08.11.2011, 23:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2011, 23:12
Помогаю со студенческими работами здесь

Помогите найти ошибку в коде
помогите найти ошибку - а именно не работает компиляция... using (Stream stream =...

Помогите найти ошибку в коде
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; using namespace std; void mas(int ar,...

Помогите найти ошибку в коде.
условие: записать в одномерный массив, те числа из числовой последовательности введенной...

Помогите найти ошибку в коде
program l12_1; uses crt; type slovar=record slovo:string; ...

Помогите найти ошибку в коде
Проблема вот в чём, есть программа, довольно большая по кол-ву строк и поэтому весь код показать не...

Помогите найти ошибку в коде
if(i1!=i3) return; if(i2!=i4) return; doubled1=new...


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

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