Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Photosmart13
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 2
1

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

28.10.2013, 09:45. Просмотров 402. Ответов 2
Метки нет (Все метки)

Добрый день. Столкнулся с непонятным свойством. При сокращении программы, выводится другой результат. Вот программа написанная мной, результат она выдает неверный:
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. Из-за чего происходят такие изменения, цикл не меняется, значения остаются те-же, объясните в чем разница этих двух примеров.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 09:45
Ответы с готовыми решениями:

Лафоре. Глава 11. Задача 2
Решал задачку из учебника - Лафоре. Глава 11. Задача 2. Вот код #include...

Правильное ли решение задачи? Лафоре. 3 глава 9 задача
Представьте, что вы собираетесь пригласить к себе шестерых гостей, но за вашим...

Считывание числа поциферно (задача Лафоре, 3 глава, объяснить код)
Напишите программу,которая позволяет пользователю ввести 6 цифр,а затем выводит...

Зацикливание программы. В чем же ошибка? ( Упражнение 5 Глава 7 Лафоре ООП C++)
Миллион раз пересмотрел, ну не вижу ошибку и все тут :(. Должна же остановка на...

Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава)
Доброго времени суток. В очередной раз обращаюсь за советом касательно...

2
metaluga145
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
28.10.2013, 10:16 2
Photosmart13, очевидно, что да, так и должно быть) внимательно просмотрите когда вы получаете сигнал о том, что нажата клавиша r в обеих программах и когда обрываются циклы)
1
Photosmart13
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 2
28.10.2013, 11:28  [ТС] 3
Спасибо, metaluga145, понял. Навел на мысль правильную, Получается что при нажатии клавиши завершения цикла, происходит присваивание значения и само выражение, а уже потом проверка цикла и его завершение в моей версии. А в версии учебника операция присваивания находится прямо внутри условия цикла while. Разобрался. =)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2013, 11:28

Антивирус касперский сигнализирует о вирусной угрозе в прогграмме по задаче 7 глава 8 (С++ Р. Лафоре)
решаю задачу из книги Р. Лафоре С++Объектно-ориентированное программирование и...

Прата, задача 2, глава 6
Доброго времени суток. Учу программирования по книжке Прата. И вот такая...

Задача из Лафоре
Для разъяснения действия наших доморощенных указателей мы смоделируем память...


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

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

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