Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Photosmart13
0 / 0 / 0
Регистрация: 28.10.2013
Сообщений: 2
#1

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

28.10.2013, 09:45. Просмотров 385. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сокращение программы, приводит к другому результату. Лафоре 3 глава, 3 задача (C++):

Лафоре. Глава 11. Задача 2 - C++
Решал задачку из учебника - Лафоре. Глава 11. Задача 2. Вот код #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; ...

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

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

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

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

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

2
metaluga145
243 / 244 / 20
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Задача из Лафоре - C++
есть задачка из Лафоре -&gt; Модифицируйте класс bMoney из упражнения 12 главы 7 «Массивы и стро-ки», включив арифметические операции,...

Прата, задача 2, глава 6 - C++
Доброго времени суток. Учу программирования по книжке Прата. И вот такая задача: &quot;Напишите программу, которая считывает до десяти...

Очередь (задача из Лафоре) - C++
Задача 9 из Лафоре: Надо написать класс queue, имеющий два метода: put() для помещения элемента в очередь и get() для извлечения элемента...


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

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

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