С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
7 / 7 / 4
Регистрация: 07.09.2012
Сообщений: 178

Мусор в элементах массива при передаче между формами c++

04.05.2014, 18:11. Показов 1425. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, собственно проблема ясна с названия темы, после передачи массива в дочерную форму, каждый 2-ой элемент забивается мусором.
Кнопка по которой считываются элементы( тут делал проверку, выводил все элементы обратно всё сходиться)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
System::Void Main_Window::button1_Click(System::Object^  sender, System::EventArgs^  e) {
        if (textBox1->Text == "")
        {
            MessageBox::Show("Заполните данные", "Ошибка");
            return;
        }
        array <wchar_t>^ mass = textBox1->Text->ToCharArray();
        int n = mass->Length;
        int count_elements = 0;
        int *start_mass = new int[n];
        for (int i = 0; i < n; i++)
        {
            if (mass[i] != ' ')
            {
                start_mass[i] = Convert::ToInt32(Convert::ToString(mass[i]));
                count_elements++;
            }
        }
        
        queue_actions^ obj=gcnew queue_actions(this,start_mass,count_elements);
        obj->ShowDialog();
        
    }
конструктор 2-ой формы( в котором уже происходит заполнение мусором)
C++
1
2
3
4
5
6
7
8
9
10
11
queue_actions(Main_Window^ parent, int *massive, int n)
        {
            InitializeComponent();
            parentForm = parent;
            lst1 = new List();
            total_elemens = n;
            for (int i = 0; i < n; i++)
            {
                lst1->Add(massive[i]);
                MessageBox::Show(Convert::ToString(massive[i]));
            }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2014, 18:11
Ответы с готовыми решениями:

Мусор в элементах массива при передаче в функцию
Доброго времени суток, столкнулся с данной проблемой в CLI, попробовал реализовать аналог для консольного приложения всё работает, почему...

Ошибки при передаче данных между клиентом и сервером
Всем привет. В прошлом году писал диплом в виде клиент-серверного приложения. В основу лёг первый попавшийся пример из просторов...

Ошибка при передаче значения переменной между модулями
В стандартном модуле глобально объявлена булева переменная isNewNeed, при открытии формы ей присваивается значение true. Сразу же после...

1
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
04.05.2014, 21:04
Лучший ответ Сообщение было отмечено Vlad_ как решение

Решение

Потому-что в реализации вы делали следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
    int *start_mass = new int[n]; // Вот тут выделен массив под размер N элементов - он же ниже передается в форму
        for (int i = 0; i < n; i++)
        {
            if (mass[i] != ' ')
            {
                start_mass[i] = Convert::ToInt32(Convert::ToString(mass[i])); //Тут инициализируются значениями только 
                                                                            //элементы для которых выполнено условия
                                                                            //А другие элементы содержат мусор
                count_elements++;
            }
        }
Далее вы передаете массив внутрь другой функции - с измененым размером - в итоге получая скажем исходный массив размера 10 элементов, из которых заполнено значениями только 5 (скажем каждый второй). А в функции queue_actions вы обрабатываете 5 первых элементов ( из которых 1-ый и 3ий содержат не инициализированные значения).

Если бы в качестве индекса для start_mass использовали count_elements - такой проблемы не возникло бы.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2014, 21:04
Помогаю со студенческими работами здесь

Конвертация между rvalue и lvalue при передаче аргумента в функцию
Как это конвертируется если я обявил аргумент типа lvalue а передаю обьект rvalue ? #include &lt;iostream&gt; #include...

Ошибка при переключении между формами
Здравствуйте, уважаемые форумчане! Столкнулся вот с такой проблемой: Происходит это после компиляции данного кода: ...

Манипуляции при переходе между формами
Привет всем. Подзабыла VB. Подскажите как написать код для такой манипуляции. На форме имеется перечисленные данные представленные в виде...

Мерцание при переходе между формами
Привет. Вопрос такой, с чем может быть связан такой ээфект? При переходе от одной формы к другой на долю секунды пояявялется экран рабочего...

Передача между формами при showdialog
Надо передать данные из главной формы в дочернюю. Делаю так: frm1 public event EventHandler&lt;string&gt; MyEvent; private...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru