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

Сокращение программы, приводит к другому результату. Лафоре 3 глава, 3 задача - C++

Восстановить пароль Регистрация
 
Photosmart13
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 2
28.10.2013, 09:45     Сокращение программы, приводит к другому результату. Лафоре 3 глава, 3 задача #1
Добрый день. Столкнулся с непонятным свойством. При сокращении программы, выводится другой результат. Вот программа написанная мной, результат она выдает неверный:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <conio.h> // для getche()
 
using namespace std;
int main()
{
    setlocale (0, "Rus");
    long x = 0; // в этой переменной итоговое число
    char get = 'a';
 
    cout << "Введите число: ";
    while ( get != '\r') // цикл пока не будет нажата клавиша Enter
    {
        get = getche();
        x = x * 10 + get - '0';
    }
cout << "Вы ввели число: " << x << endl;
system ("pause");
return 0;
}
При вводе числа: 123456, результат равен 1234525. Хотя должен выводить 123456. При сокращении программы, как указано в учебнике
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio.h>
 
using namespace std;
int main()
{
    setlocale (0, "Rus");
    long x = 0;
    char get = 'a';
 
    cout << "Введите число: ";
    while ((get = getche()) != '\r') // сокращенная версия, цикл пока не будет нажата клавиша Enter
        x = x * 10 + get - '0';
cout << "Вы ввели число: " << x << endl;
system ("pause");
return 0;
}
результат становится правильным 123456. Из-за чего происходят такие изменения, цикл не меняется, значения остаются те-же, объясните в чем разница этих двух примеров.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 09:45     Сокращение программы, приводит к другому результату. Лафоре 3 глава, 3 задача
Посмотрите здесь:

C++ Лафоре задача по классам
Считывание числа поциферно (задача Лафоре, 3 глава, объяснить код) C++
C++ Задача из Лафоре
Задача из Лафоре C++
Лафоре. Глава 11. Задача 2 C++
C++ Не компилируется задача из Лафоре
C++ Очередь (задача из Лафоре)
C++ Задача из книги Страуструпа 4 глава векторы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
28.10.2013, 10:16     Сокращение программы, приводит к другому результату. Лафоре 3 глава, 3 задача #2
Photosmart13, очевидно, что да, так и должно быть) внимательно просмотрите когда вы получаете сигнал о том, что нажата клавиша r в обеих программах и когда обрываются циклы)
Photosmart13
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 2
28.10.2013, 11:28  [ТС]     Сокращение программы, приводит к другому результату. Лафоре 3 глава, 3 задача #3
Спасибо, metaluga145, понял. Навел на мысль правильную, Получается что при нажатии клавиши завершения цикла, происходит присваивание значения и само выражение, а уже потом проверка цикла и его завершение в моей версии. А в версии учебника операция присваивания находится прямо внутри условия цикла while. Разобрался. =)
Yandex
Объявления
28.10.2013, 11:28     Сокращение программы, приводит к другому результату. Лафоре 3 глава, 3 задача
Ответ Создать тему
Опции темы

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