Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для DoktorKraft
0 / 2 / 0
Регистрация: 20.11.2011
Сообщений: 61

Перераспределение массива Sxema при превышении первоначально выделенного количества элементов

24.12.2011, 22:56. Показов 1085. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вечер добрый)
Есть небольшая программка. Первоначально вводим кол-во узлов. В последующем если мы запамятовавшие начнем создавать кол-во узлов больше чем первоначально ввели,он автоматически должон перераспределятся.Код получился следующий. Но он при вводе номера узлов начинает ругаться,я не могу понять что он от меня хочет)))

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
        int КоличесвтоУзлов;
        Элемент[] Sxema;
        int index = 0;
        Элемент[] p;
 
        public Form1()
        {
            InitializeComponent();
            listBox1.SelectedIndex = 0;
            listBox2.SelectedIndex = 0;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {   //кнопка "Ввести количесвто узлов
            try { КоличесвтоУзлов = Convert.ToInt32(textBox1.Text); }
            catch (Exception) { return; }
            if (КоличесвтоУзлов>=0)
            {
                tabControl1.Visible=true;
                label1.Text="Узлов схемы="+textBox1.Text;
                button1.Visible=textBox1.Visible=false;
                int элементов = КоличесвтоУзлов +
                    КоличесвтоУзлов * (КоличесвтоУзлов - 1) / 2;
                Sxema = new Элемент[элементов];
                index = КоличесвтоУзлов;
            }
     
        }
 
        class Элемент
        {
            protected string Тип;
            protected string тип { get { return Тип; } }
            public Элемент(string тип) { Тип = тип; }
        }
        class Узел : Элемент
        {
            int Номер;
            public Узел(int номер, string type) : base(type) { Номер = номер; }
            public int номер { get { return Номер; } }
            public override string ToString() { return String.Format("Номер={0}, тип={1}", номер, тип); }
        }
        class Ветвь: Элемент
        {
            int Начало, Конец;
            public Ветвь (int начало, int конец, string type):base(type)
            {Начало=начало;Конец=конец;}
            public int начало {get{return Начало;}}
            public int конец{get{return Конец;}}
            public override string ToString() { return String.Format("Начало={0}, Конец={1},тип={2}", начало ,конец, тип); }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            int N = Convert.ToInt32(textBox2.Text);
            string T = listBox1.Text;
            if (index < Sxema.Length) 
            { Sxema[index] = new Узел(N, T); Sxema[index]=p[index] ; index++; }
            else
            {
                Sxema = new Элемент[index + 1]; for (int i = 0; i < Sxema.Length - 1; i++) { Sxema[i] = p[i]; }
                Sxema[index] = new Узел(N, T); index++; p = new Элемент[index]; for (int y = 0; y < p.Length; y++)
                {
                    p[y] = Sxema[y];
                }
            }
            textBox2.Text = "";
            listBox1.SelectedIndex = 0;
            listBox4.Visible = false;
        }
        private void button3_Click(object sender, EventArgs e)
        {   //"Показать список узлов"
            listBox4.Visible = true;
            string s;
            listBox4.Items.Clear();
            for (int i =0; i<Sxema.Length; i++)
            {
                if (Sxema [i] is Узел)
                {
                    s=((Узел)Sxema[i]).ToString ();
                    listBox4.Items.Add(s);
                }
            }
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
 
            int N = Convert.ToInt32(textBox3.Text);
            int K = Convert.ToInt32(textBox4.Text);
            string T = listBox2.Text;
            if (index < Sxema.Length) { Sxema[index] = new Ветвь(N, K, T); p[index] = Sxema[index]; index++; }
            else
            {
                Sxema = new Элемент[index + 1]; for (int i = 0; i < Sxema.Length - 1; i++) { Sxema[i] = p[i]; }
                Sxema[index] = new Ветвь(N, K, T); index++; p = new Элемент[index]; for (int y = 0; y < p.Length; y++) { p[y] = Sxema[y]; }
            }
            textBox3.Text = "";
            textBox4.Text = "";
            listBox2.SelectedIndex = 0;
            listBox3.Visible = false;
 
        }
Миниатюры
Перераспределение массива Sxema при превышении первоначально выделенного количества элементов   Перераспределение массива Sxema при превышении первоначально выделенного количества элементов  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2011, 22:56
Ответы с готовыми решениями:

Вычисление количества элементов массива, которые при делении на 5 дают в остатке 1
Здравствуйте форум, прошу помощи написать программу &quot;Дан массив А(NxM) с элементами целого типа. Написать программу для вычисления...

Запретить ввод отрицательного числа при вводе количества элементов массива
как сделать так,что бы при вводе кол-ва эллементов массива нельзя было ввести отрицательное число #include&lt;stdio.h&gt; ...

Сделать так, чтобы выводилось сообщении при вводе отрицательного количества элементов массива
При сортировке массива целочисленного типа программа при превышении заданного количества элементов выводит соответствующее сообщение. Но...

3
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
25.12.2011, 01:12
Вы пытаетесь обратиться к элементу массива p , хотя еще не инициализировали его. Вообще использование русских слов в С# допустимо, но нежелательно.
1
 Аватар для DoktorKraft
0 / 2 / 0
Регистрация: 20.11.2011
Сообщений: 61
25.12.2011, 08:40  [ТС]
Это лабораторные)У нас там все через одно место)
А как мне его инициализировать если не секрет?)))Я в С# еще самый чайник из всех чайников)
0
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
25.12.2011, 09:35
Понимаю, тоже вот заканчиваю учиться. У Вас хоть C# есть, а у нас там паскаль да делфя.
Вообще о Вашей задаче.
Смотрите
у Вас вот такой код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 private void button2_Click(object sender, EventArgs e)
        {
            int N = Convert.ToInt32(textBox2.Text);
            string T = listBox1.Text;
            if (index < Sxema.Length) 
            { Sxema[index] = new Узел(N, T); Sxema[index]=p[index] ; index++; }
            else
            {
                Sxema = new Элемент[index + 1]; for (int i = 0; i < Sxema.Length - 1; i++) { Sxema[i] = p[i]; }
                Sxema[index] = new Узел(N, T); index++; p = new Элемент[index]; for (int y = 0; y < p.Length; y++)
                {
                    p[y] = Sxema[y];
                }
            }
            textBox2.Text = "";
            listBox1.SelectedIndex = 0;
            listBox4.Visible = false;
        }
Если условие выполнилось , то Вы идете сюда

C#
1
 Sxema[index] = new Узел(N, T); Sxema[index]=p[index] ; index++;
Тут массивы Sxema,p Вы не проинициализировали т.е. нет кода, типа
C#
1
Sxema = new Элемент[index + 1];
, который у вас есть, в том случае, если условие не выполнилось. Т.е. проблема в том, что Вы, грубо говоря не задали параметры массива, его размер в частности и поэтому при обращении к его элементам Вы ссылаетесь на несуществующее место.
Это нужно сделать, до первого возможного обращения к элементам массива.
Вот тут можно подробнее прочитать про массивы http://www.skillcoding.com/Default.aspx?id=185
Так же рекомендую избавиться от русских слов и задавать более осмысленные имена. Это совет из личного опыта. Возможно через месяц Вы и не вспомните, что делает скажем listBox1, а если написать, допустим так userNameListBox, то гораздо понятнее, что данный список хранит имена пользователей.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2011, 09:35
Помогаю со студенческими работами здесь

Программу для вычисления количества элементов массива, которые при делении на 5 дают в остатке 1
Задание гласит: Дан массив размера 3 x 5 с элементами целого типа. Написать программу для вычисления количества элементов массива,...

Вычислить произведение количества отрицательных и количества положительных элементов одномерного массива
Указатели. Вычислить произведение количества отрицательных и количества положительных элементов одномерного массива. Использовать функцию...

Нахождение количества положительных и количества отрицательных элементов массива
Задан одномерный числовой массив. Постройте алгоритм и составьте программу нахождения количества положительных и количества отрицательных...

Найти процент количества четных элементов массива А от общего количества четных элементов в массивах A и B.
даны 2 целочисленных массива разной размерности А и В. Определить какой процент составляет количество четных элементов массива А от общего...

Подсчет количества элементов двумерного массива, превосходящих среднее арифметическое значение элементов этого массива
Составьте программу подсчета количества элементов двумерного массива А(N,M), превосходящих среднее арифметическое значение элементов этого...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru