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

Объясните результат работы следующей программы - C++

Восстановить пароль Регистрация
 
Live4Sky
6 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 42
08.12.2013, 18:03     Объясните результат работы следующей программы #1
C++
1
2
3
4
5
6
7
    double x =1.23456789;
for(int i=0; i<1030;i++)
x=x/2;
for( int i=0; i <1030;i++)
x=x*2;
cout.precision (12);
cout<<fixed<<x<<endl;
Как изменится результат ее работы, если изменить количество
повторений на 1000, 1040,1050,1060,1070,1080? Почему????????
как бы вот в чем вопрос: если увеличивать число повторений,то результат сведется к нулю.ну т.е. если увеличить то число уменьшается.а вот почему? обьясните пжлст,не могу найти.4 источника перечитал ничего путнего про циклы не сказано.

Добавлено через 5 минут
и еще подскажите, если 2 заменить на 3 (x/3),(x*3),то почему при любых изменениях повторений результат равен "нулю"?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 18:03     Объясните результат работы следующей программы
Посмотрите здесь:

C++ Объясните пожалуйста ход работы программы
C++ Объясните пожалуйста код и ход работы программы на С++
C++ Определить результат работы программы
Поясните результат работы программы C++
Какой результат работы этой программы? C++
Не могу разобраться в коде. Некорректный результат работы программы C++
C++ Объясните принцип работы программы
Объясните принцип работы программы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lewis_Husk
 Аватар для Lewis_Husk
0 / 0 / 0
Регистрация: 28.03.2012
Сообщений: 13
08.12.2013, 20:19     Объясните результат работы следующей программы #2
[QUOTE=Live4Sky;5457077]
C++
1
2
3
4
5
6
7
    double x =1.23456789; //Присвоить переменной x значение 1.23456789
for(int i=0; i<1030;i++)//Цикл в 1030 повторений
x=x/2; //Делим x на 2
for( int i=0; i <1030;i++)//Цикл в 1030 повторений
x=x*2; //Умножаем на 2
cout.precision (12); //Вывести значения до 12 знаков после запятой
cout<<fixed<<x<<endl;
Ваше число сводится к нулю из-за того, что вы задали в программе то, что после 12 знаков после запятой он не выведет другие числа. X постепенно становится всё меньше и меньше:
1. 0,00001,
---
50. 0,0000000000000000000001

В конечном итоге все 12 значений занимают нули, которые выводятся в консоль.

Если хотите больших значений просто уберите ограничение знаков после запятой, а так же замените double на long double.
Yandex
Объявления
08.12.2013, 20:19     Объясните результат работы следующей программы
Ответ Создать тему
Опции темы

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