Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Sеrgo12345
0 / 0 / 0
Регистрация: 29.07.2013
Сообщений: 5
#1

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

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

Сделал программу которая должна высчитывать по формуле, но она высчитывает не совсем то число.
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, а выводит огромное число.
http://www.cyberforum.ru/cpp-beginners/thread868832.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2013, 20:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вместо результата выводит непонятное число (C++):

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

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

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

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

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

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

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

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

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

Itoa выдает непонятное число
int a=79689063063; char n; ltoa(a,n,10); cout &lt;&lt;n; вместо строки выдает...

С++ вместо 0.0 выводит -0.0
Сначала вместо нуля выводил экспоненту, поставил в сout setprecision(1) выводит...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru