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

Как в цикле обратится к каждой цифре заданного числа? - C++

Восстановить пароль Регистрация
 
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 00:30     Как в цикле обратится к каждой цифре заданного числа? #1
Например, есть число 1234567890!!!! Как в цикле обратится к каждой цифре етого числа???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2010, 00:30     Как в цикле обратится к каждой цифре заданного числа?
Посмотрите здесь:

Составить программу ,позволяющую по последней цифре данного числа определить последнюю цифру этого куба этого числа. C++
Сумма каких-либо двух цифр заданного трехзначного натурального числа N равна третьей цифре. C++
По последней цифре числа найти последнюю цифру квадрата этого числа C++
Как написать программу, которая читает список целых int in array и количество повторов по каждой цифре? C++
Обращение к цифре числа если число представленно не массивом C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
09.03.2010, 00:47     Как в цикле обратится к каждой цифре заданного числа? #2
Не проверял
C++
1
2
3
4
5
6
7
int Chislo(int ch, int pos)
{
    int i, div = 1;
    for(i = 1; i < pos; ++i)
        div *= 10;
    return (ch/div) % 10;
}
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 00:53  [ТС]     Как в цикле обратится к каждой цифре заданного числа? #3
pos - ето количество цифр числа ch???
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
09.03.2010, 01:06     Как в цикле обратится к каждой цифре заданного числа? #4
да, pos - номер числа считая справа, т.е. для числа 123456, pos = 2 - это цифра 5
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 01:26  [ТС]     Как в цикле обратится к каждой цифре заданного числа? #5
Работает, только не выводит последнюю цыфру???

И если больше 10 цифр, выводит неправильно, может ето иза типа данных????
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
09.03.2010, 01:42     Как в цикле обратится к каждой цифре заданного числа? #6
MILAN, проверьте http://codepad.org/M7idKHyv
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 01:55  [ТС]     Как в цикле обратится к каждой цифре заданного числа? #7
Все работает, но стоит мне увеличить число, например 12345678910111213, и выводит бред!!!! При етом я делаю тип числа unsigned long long int!!!! Вот почему часть выводит нормально, а часть - мусор из памяти: 31211101984603605???

M128K145, вы уш меня извините за глупые вопросы!!!!!
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
09.03.2010, 02:08     Как в цикле обратится к каждой цифре заданного числа? #8
Максимум который на стандартном типе я выжал в MSVS 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
int Chislo(unsigned long long int ch, int pos)
{
    unsigned long long int div = 1;
    int i;
    for(i = 1; i < pos; ++i)
        div *= 10;
    return (ch/div) % 10;
}
int main()
{
    int i;
    unsigned long long int ch = 12345678901234567890;
    for(i = 1; i < 21; ++i)
        std::cout<<Chislo(ch, i);
    return 0;
}
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 02:35  [ТС]     Как в цикле обратится к каждой цифре заданного числа? #9
Огромное спасибо!!!!

Добавлено через 23 минуты
Еще один вопрос, что значит ошибка : error C2659: '=' : function as left operand
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
09.03.2010, 02:42     Как в цикле обратится к каждой цифре заданного числа? #10
MILAN, в какой строке. Вы неправильно присваиваете что-то
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 02:44  [ТС]     Как в цикле обратится к каждой цифре заданного числа? #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int oct_chislo(unsigned long long int ch, int pos)
{
    unsigned long long int div = 1;
    int i;
    for(i = 1; i < pos; ++i)
        div *= 10;
    return static_cast<int>((ch/div) % 10);
}
long OctToDec(unsigned long long oct1)
{
    std::ostringstream sto;
    sto<<oct1;
    for( i=1;i<((sto.str()).length());++i)
    { 
       dec =(oct_chislo(oct1,static_cast<int>(i)))+pow(static_cast<double>(8),static_cast<int>(i+1));
        std::endl;
    }cout<<n;
    return 0;
}
16 строка!!!!
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
09.03.2010, 03:06     Как в цикле обратится к каждой цифре заданного числа? #12
у вас для начала не объявлены переменные i, dec, n.
Чисто логически я могу предположить, что i типа int, но я не понимаю в чем заключается суть неявного приведения int к типу int?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 03:10  [ТС]     Как в цикле обратится к каждой цифре заданного числа? #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <sstream>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
//long DecToOct(unsigned long long int dec);
int oct_hislo(unsigned long long int ch, int pos);
long OctToDec(unsigned long long int oct1);
unsigned long long int swap1,d,o,o_dec=0,n,i;
string s_oct; 
int main()
{
    setlocale(LC_ALL,"Russian");
    //cout<<"Введiть число в 10-рiчнiй системi числення:  ";
    //std::cin>>d;
    //cout<<"\n\nЧисло в 8-рiчнiй системi числення - ";
    //DecToOct(d);
    cout<<"Введiть число в 8-рiчнiй системi числення: ";
    std::cin>>o;
    cout<<"\n\nЧисло в 10-рiчнiй системi числення - ";
    OctToDec(o);
    system("pause");
    return 0;
}
/*long DecToOct(unsigned long long int dec)
{
    for (dec;dec>=1;)
       {     
            swap1=static_cast<int>(dec%8);
            std::ostringstream ost;
            ost<<swap1;
            s_oct+=ost.str();
            dec=dec/8;
       }
    cout<<s_oct.length();
    std::string ss(s_oct);
    std::reverse(ss.begin(), ss.end());
    std::cout<<ss<<std::endl<<std::endl;
    return 0;
}*/
int oct_chislo(unsigned long long int ch, int pos)
{
    unsigned long long int div = 1;
    int i;
    for(i = 1; i < pos; ++i)
        div *= 10;
    return static_cast<int>((ch/div) % 10);
}
long OctToDec(unsigned long long oct1)
{
    std::ostringstream sto;
    sto<<oct1;
    for( i=1;i<((sto.str()).length());++i)
    { 
       o_dec =(oct_chislo(oct1,static_cast<int>(i)))+pow(static_cast<double>(8),static_cast<int>(i+1));
        std::endl;
    }cout<<n;
    return 0;
}
Как думаете, в чем ошыбка???
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
09.03.2010, 03:24     Как в цикле обратится к каждой цифре заданного числа? #14
1) в глобальных переменных. Их быть не должно.
2) Зачем под переменную, которая может принимать значения [1, 21] выделять 8 байт?
Вы допустили ошибку когда функцию OctToDec вырвали из какого-то кода, не до конца разобравшись как она работает и что использует
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2010, 03:45     Как в цикле обратится к каждой цифре заданного числа?
Еще ссылки по теме:

C++ Написать программу, которая по одной из цифр 0,1,2,3, 4,5,6,7,8,9 – послед-ней цифре числа N - находит последнюю цифру квадрата этого числа
Составить программу, позволяющую по последней цифре данного числа, определить последнею цифру куба этого числа C++
Для каждой строки подсчитать количество элементов, больших заданного числа C++

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

Или воспользуйтесь поиском по форуму:
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 03:45  [ТС]     Как в цикле обратится к каждой цифре заданного числа? #15
Спасибо, все понял и исправил!!!!
Yandex
Объявления
09.03.2010, 03:45     Как в цикле обратится к каждой цифре заданного числа?
Ответ Создать тему
Опции темы

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