0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 5
1

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

29.07.2013, 20:19. Показов 10151. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сделал программу которая должна высчитывать по формуле, но она высчитывает не совсем то число.
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, а выводит огромное число.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2013, 20:19
Ответы с готовыми решениями:

Вместо нуля выводит непонятное число
Вот пожалуйста кусок кода, считающий неувязку после решения СЛАУ: int n=5; double...

Printf выводит непонятное число вместо требуемого
Здравствуйте. Совсем недавно начал изучать С++, и натолкнулся на такую проблему, нигде не могу...

Выводит непонятное число
При выполнение программы всегда выводится на экран число 2686744. Как это исправить? Работаю в...

выводит между результатом непонятное число
нужно вывести: 1й столбец сверху вниз, 2й столбец снизу вверх и т.д. если ввожу матрицу 1 2 3...

18
40 / 40 / 5
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 20:25 2
Последняя строка, Relox->Text имеет тип System::String, а rezultat - тип int. Приведи rezultat к System::String.
1
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 переводил.
0
40 / 40 / 5
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 20:30 4
эм.. точно?
Может как-то не так приводил? Должно быть как-то так:
Relox->Text += Convert::ToString(rezultat);

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

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

Как я понял в Managed C++:
Переменные в стеке инициализируются нулем, а если в куче такого не происходит и там мусор.
0
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);
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:59 14
Цитата Сообщение от stragger Посмотреть сообщение
Как я понял в Managed C++:
Переменные в стеке инициализируются нулем, а если в куче такого не происходит и там мусор.
Насчёт этого не знаю, с формами не знаком. ТС может отладчиком посмотреть, что-где не так?
0
40 / 40 / 5
Регистрация: 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;
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 21:00 16
Цитата Сообщение от Sеrgo12345 Посмотреть сообщение
chisla = new int[chislo];
Та же история, массив неинициализирован.
0
0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 5
29.07.2013, 21:02  [ТС] 17
Цитата Сообщение от alsav22 Посмотреть сообщение
Та же история, массив неинициализирован.
Wow спасибо. Теперь всё работает.
0
40 / 40 / 5
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 21:03 18
alsav22, ну да, так, если интересно вот скрин в debug
Миниатюры
Вместо результата выводит непонятное число  
0
40 / 40 / 5
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 21:04 19
Хотя мораль конечно, всегда и всё инициализировать и не смотреть на компилятор.
1
29.07.2013, 21:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.07.2013, 21:04
Помогаю со студенческими работами здесь

Программа выводит что-то непонятное
Помогите пожалуйста, подскажите, почему программа бред выводит? Вот программа. #include...

Программа не выводит результата
Возможно неправильно вынес данные в подпрограмму (foo1) ,кто в силах исправить ? #include...

Выдает непонятное число!С++
//В массив A занесены натуральные числа. Найти сумму тех //элементов, которые кратны данному К....

Сортировка массива в виде функций. Не выводит результата
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; void Scan(){ int i,n; int a;...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

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