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

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

29.07.2013, 20:19. Просмотров 2389. Ответов 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, а выводит огромное число.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2013, 20:19
Ответы с готовыми решениями:

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

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

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

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

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

18
stragger
40 / 40 / 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
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
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:34 5
Вот это:
Цитата Сообщение от stragger Посмотреть сообщение
И наверное стоит инициализировать rezultat = 0, при объявлении.
1
stragger
40 / 40 / 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
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:47 8
Не так. 2010 студия не инициализирует.
0
stragger
40 / 40 / 5
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 20:50 9
alsav22, хм.. буду знать.
Sеrgo12345, инициализируй все объявленные переменные, в том числе и массив int *chisla;
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:50 10
Это в release.
1
Миниатюры
Вместо результата выводит непонятное число  
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:52 11
Это в debug, с предупреждениями. Вот mingw инициализирует.
0
Миниатюры
Вместо результата выводит непонятное число  
stragger
40 / 40 / 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
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2013, 20:59 14
Цитата Сообщение от stragger Посмотреть сообщение
Как я понял в Managed C++:
Переменные в стеке инициализируются нулем, а если в куче такого не происходит и там мусор.
Насчёт этого не знаю, с формами не знаком. ТС может отладчиком посмотреть, что-где не так?
0
stragger
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
alsav22
5442 / 4837 / 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
40 / 40 / 5
Регистрация: 05.12.2011
Сообщений: 343
29.07.2013, 21:03 18
alsav22, ну да, так, если интересно вот скрин в debug
0
Миниатюры
Вместо результата выводит непонятное число  
stragger
40 / 40 / 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

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

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

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


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

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

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