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

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

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

Считывание числа поциферно (задача Лафоре, 3 глава, объяснить код) - C++

08.11.2012, 02:08. Просмотров 681. Ответов 2
Метки нет (Все метки)

Напишите программу,которая позволяет пользователю ввести 6 цифр,а затем выводит результат типа long на экране.Каждая цифра должна считываться отдельно при помощи функции getche().Вычисление значения переменной производится путем умножения текущего ее значения на 10 и сложение с последней введенной цифрой(для того,чтобы из кода символа получить цифру,вычите из него 48 или '0' .Результат программы должен быть вроде этого:
Введите число:123456
Вы ввели число:123456
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
 
    char ch;
    unsigned long total=0;                //почему присвоили именно значение 0?
    cout<<"\nVvedite chislo:";
    while ((ch=getche())!='\r')          //getche() операция ввода?как она работает?
    total=total*10+ch-48;               //почему если убрать total*10,результат будет не правильным?ведь 
                                                 //total присвоили значение 0,а о *10=0.
                                                 //переменной ch присвоили введенное значение,то есть 6          
                                                 //цифр,да?-48 или -'a',что сделает с 6 символами?
    cout<<"\nPolushilos chislo:"<<total<<endl;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 02:08     Считывание числа поциферно (задача Лафоре, 3 глава, объяснить код)
Посмотрите здесь:

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

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

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

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

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

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

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

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

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

Лафоре задача по классам - C++
Задача из книги лафоре по классам №7: нужно написать программу используя классы для ввода и вывода координат, кроме того нужно написать...

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

Не компилируется задача из Лафоре - C++
Помогите пожалуйста разбораться почему компилятор ругается: 1&gt;L.obj : error LNK2019: unresolved external symbol &quot;void __cdecl...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.11.2012, 02:21     Считывание числа поциферно (задача Лафоре, 3 глава, объяснить код) #2
Добавлено через 8 минут
Цитата Сообщение от Reyzel Посмотреть сообщение
getche() операция ввода?как она работает?
Читает по символу с консоли с отображением на эране.
zvoronz
271 / 238 / 21
Регистрация: 29.05.2012
Сообщений: 889
08.11.2012, 02:22     Считывание числа поциферно (задача Лафоре, 3 глава, объяснить код) #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
 
    char ch;
    unsigned long total=0;                //потому что первое число нам нужно поставить в первую
    cout<<"\nVvedite chislo:";          //позицию в числе то есть 0*10+сh-48 при ch = 52 даст нам 4
                                                 //при чтении след цифры мы получим 4*10+ch-48 при ch = 50
                                                 //даст нам число 42 в переменной total
    while ((ch=getche())!='\r')          //getche() возвращает символ нажатой клавиши в этом коде мы
    total=total*10+ch-48;               //читаем в цикле по символьно пока не придёт символ конца 
                                                 //строки
                                                 // переменной ch присвоили введенное значение,то есть 6          
                                                 // цифр,да? нет, ch содержит всегда последнюю нажатую цифру
                                                 // так как у нас символ "0" соответствует коду 48 в ASCII
                                                 // "1" 49 "2" 50 и т.п. то что бы получить значение которое
                                                 // представляет символ просто отнимаем от него нижнюю границу
    cout<<"\nPolushilos chislo:"<<total<<endl;
    system("pause");
    return 0;
}
Ответ Создать тему
Опции темы

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