Форум программистов, компьютерный форум CyberForum.ru

Вместо результата выводит непонятное число - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Sеrgo12345
0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 5
29.07.2013, 20:19     Вместо результата выводит непонятное число #1
Сделал программу которая должна высчитывать по формуле, но она высчитывает не совсем то число.
C++
1
2
3
4
5
6
7
8
9
10
11
12
                 int chislo = Convert::ToInt32(textBox2->Text);
                 int *chisla = new int[chislo];
                 int lolx = Convert::ToInt32(textBox1->Text);
                 int rezultat;
                 int rexa;
                 for(int i = lolx; i < chislo; i++)
                 {
                        chisla[i] += (Convert::ToInt32(textBox1->Text)+i)*4;
                        rezultat += chisla[i];
                 }
                 rexa = Convert::ToInt32(rezultat);
                 Relox->Text += rezultat;
Например в 1 поле я ввожу цифру один, а во второе поле цифру три, то он в третьем поле должен выдать результат 36, а выводит огромное число.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2013, 20:19     Вместо результата выводит непонятное число
Посмотрите здесь:

C++ Почему выводит красные квадратики вместо Backspace?
Выдает непонятное число!С++ C++
Выводит вместо массива мягко сказать хрень C++
C++ Выводит целочисленное значение вместо вещественного (функции)
Программа вместо списка выводит несколько семерок C++
Выводит непонятное число C++
C++ Вместо нуля выводит непонятное число
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stragger
38 / 38 / 2
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 20:25     Вместо результата выводит непонятное число #2
Последняя строка, Relox->Text имеет тип System::String, а rezultat - тип int. Приведи rezultat к System::String.
Sеrgo12345
0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 5
29.07.2013, 20:27  [ТС]     Вместо результата выводит непонятное число #3
Цитата Сообщение от stragger Посмотреть сообщение
Последняя строка, Relox->Text имеет тип System::String, а rezultat - тип int. Приведи rezultat к System::String.
Пробывал, уже и то и другое и в Int и в String переводил.
stragger
38 / 38 / 2
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 20:30     Вместо результата выводит непонятное число #4
эм.. точно?
Может как-то не так приводил? Должно быть как-то так:
Relox->Text += Convert::ToString(rezultat);

PS:
rexa = Convert::ToInt32(rezultat);
какая-то странная строка int к int приводится.

И наверное стоит инициализировать rezultat = 0, при объявлении.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:34     Вместо результата выводит непонятное число #5
Вот это:
Цитата Сообщение от stragger Посмотреть сообщение
И наверное стоит инициализировать rezultat = 0, при объявлении.
stragger
38 / 38 / 2
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 20:44     Вместо результата выводит непонятное число #6
alsav22, я тут специально проверил, компилятор VS 2008, и скорее всего все остальные из линейки Microsoft, инициализирует int нулем, если это не сделано явно, так что скорее всего проблема не в этом.
Sеrgo12345
0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 5
29.07.2013, 20:47  [ТС]     Вместо результата выводит непонятное число #7
Испробовал все выше предложенные варианты, всёравно выводи огромное число.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:47     Вместо результата выводит непонятное число #8
Не так. 2010 студия не инициализирует.
stragger
38 / 38 / 2
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 20:50     Вместо результата выводит непонятное число #9
alsav22, хм.. буду знать.
Sеrgo12345, инициализируй все объявленные переменные, в том числе и массив int *chisla;
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:50     Вместо результата выводит непонятное число #10
Это в release.
Миниатюры
Вместо результата выводит непонятное число  
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:52     Вместо результата выводит непонятное число #11
Это в debug, с предупреждениями. Вот mingw инициализирует.
Миниатюры
Вместо результата выводит непонятное число  
stragger
38 / 38 / 2
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 20:56     Вместо результата выводит непонятное число #12
alsav22, я проверял в Managed версии компилятора, в этом случае похоже используется именно эта версия, т.к. используется WinForms.

Как я понял в Managed C++:
Переменные в стеке инициализируются нулем, а если в куче такого не происходит и там мусор.
Sеrgo12345
0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 5
29.07.2013, 20:58  [ТС]     Вместо результата выводит непонятное число #13
Инициализировал, бесполезно.
Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
                 int chislo = 0;
                 chislo = Convert::ToInt32(textBox2->Text);
                 int *chisla = 0;
                 chisla = new int[chislo];
                 int rezultat = 0;
                 int lolx = 0;
                 lolx = Convert::ToInt32(textBox1->Text);
                 for(int i = lolx; i < chislo; i++)
                 {
                        chisla[i] += (Convert::ToInt32(textBox1->Text)+i)*4;
                        rezultat += chisla[i];
                 }
                 Relox->Text += Convert::ToString(rezultat);
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:59     Вместо результата выводит непонятное число #14
Цитата Сообщение от stragger Посмотреть сообщение
Как я понял в Managed C++:
Переменные в стеке инициализируются нулем, а если в куче такого не происходит и там мусор.
Насчёт этого не знаю, с формами не знаком. ТС может отладчиком посмотреть, что-где не так?
stragger
38 / 38 / 2
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 20:59     Вместо результата выводит непонятное число #15
Sеrgo12345, массив тоже
C
1
2
for(int i = 0; i < chislo; i++)
  chisla[i] = 0;
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 21:00     Вместо результата выводит непонятное число #16
Цитата Сообщение от Sеrgo12345 Посмотреть сообщение
chisla = new int[chislo];
Та же история, массив неинициализирован.
Sеrgo12345
0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 5
29.07.2013, 21:02  [ТС]     Вместо результата выводит непонятное число #17
Цитата Сообщение от alsav22 Посмотреть сообщение
Та же история, массив неинициализирован.
Wow спасибо. Теперь всё работает.
stragger
38 / 38 / 2
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 21:03     Вместо результата выводит непонятное число #18
alsav22, ну да, так, если интересно вот скрин в debug
Миниатюры
Вместо результата выводит непонятное число  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 21:04     Вместо результата выводит непонятное число
Еще ссылки по теме:

Программа выводит что-то непонятное C++
C++ выводит между результатом непонятное число
Вместо значений массива в cout выводит адреса C++
C++ Вместо массива выводит большие отрицательные чсила
C++ Выводит INF вместо значения

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

Или воспользуйтесь поиском по форуму:
stragger
38 / 38 / 2
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 21:04     Вместо результата выводит непонятное число #19
Хотя мораль конечно, всегда и всё инициализировать и не смотреть на компилятор.
Yandex
Объявления
29.07.2013, 21:04     Вместо результата выводит непонятное число
Ответ Создать тему
Опции темы

Текущее время: 04:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru