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

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

Войти
Регистрация
Восстановить пароль
 
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
#1

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

09.03.2010, 00:30. Просмотров 1041. Ответов 14
Метки нет (Все метки)

Например, есть число 1234567890!!!! Как в цикле обратится к каждой цифре етого числа???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2010, 00:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как в цикле обратится к каждой цифре заданного числа? (C++):

Сумма каких-либо двух цифр заданного трехзначного натурального числа N равна третьей цифре. - C++
Помогите решить задачу. Сумма каких-либо двух цифр заданного трехзначного натурального числа N равна третьей цифре. Заранее спасибо.

Как написать программу, которая читает список целых int in array и количество повторов по каждой цифре? - C++
Необходимо написать программу, которая читает список целых int in array и количество повторов по каждой цифре. - программа должна...

Для каждой строки подсчитать количество элементов, больших заданного числа - C++
Написать программу.Для каждой строки подсчитать количество элементов, больших заданного числа, и записать данные в новый массив. ...

В каждой строке заданной матрицы найти количество элементов, больших заданного числа - C++
Пожалуйста, помогите сделать две лабораторные по программированию с массивами на С++ Буду очень благодарен( 1. Задана действительная...

По последней цифре числа найти последнюю цифру квадрата этого числа - C++
Всем привет! Вообщем мне дали практическую из десяти задач.. Осталось сделать 2 шт. Задача 49. Чтобы определить на какую цифру...

Найти последний элемент каждой строки матрицы, который не является степенью заданного числа - C++
Написать программу, которая 7. для каждой строки массива определяет последний элемент, который не является степенью числа 3 (например,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 00:53  [ТС] #3
pos - ето количество цифр числа ch???
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
09.03.2010, 01:06 #4
да, pos - номер числа считая справа, т.е. для числа 123456, pos = 2 - это цифра 5
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 01:26  [ТС] #5
Работает, только не выводит последнюю цыфру???

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

M128K145, вы уш меня извините за глупые вопросы!!!!!
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 02:35  [ТС] #9
Огромное спасибо!!!!

Добавлено через 23 минуты
Еще один вопрос, что значит ошибка : error C2659: '=' : function as left operand
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
09.03.2010, 02:42 #10
MILAN, в какой строке. Вы неправильно присваиваете что-то
MILAN
885 / 779 / 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
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
09.03.2010, 03:06 #12
у вас для начала не объявлены переменные i, dec, n.
Чисто логически я могу предположить, что i типа int, но я не понимаю в чем заключается суть неявного приведения int к типу int?
MILAN
885 / 779 / 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
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
09.03.2010, 03:24 #14
1) в глобальных переменных. Их быть не должно.
2) Зачем под переменную, которая может принимать значения [1, 21] выделять 8 байт?
Вы допустили ошибку когда функцию OctToDec вырвали из какого-то кода, не до конца разобравшись как она работает и что использует
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 03:45  [ТС] #15
Спасибо, все понял и исправил!!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2010, 03:45
Привет! Вот еще темы с ответами:

Вывести вместо каждой пары соседних чисел, разность которых меньше заданного числа Е, их среднеарифметическое - C++
решить ОДНУ из трех задач 1. дана убывающая последовательность чисел. вывести вместо каждой пары соседних чисел, разность которых...

Составить программу, позволяющую по последней цифре данного числа, определить последнею цифру куба этого числа - C++
Составить программу на С++ позволяющая по последней цифре данного числа, определить последнею цифру куба этого числа_

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

Составить программу ,позволяющую по последней цифре данного числа определить последнюю цифру этого куба этого числа. - C++
Составить программу ,позволяющую по последней цифре данного числа определить последнюю цифру этого куба этого числа.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.03.2010, 03:45
Ответ Создать тему
Опции темы

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