С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
1

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

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

Author24 — интернет-сервис помощи студентам
Например, есть число 1234567890!!!! Как в цикле обратится к каждой цифре етого числа???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2010, 00:30
Ответы с готовыми решениями:

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

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

Поменять местами 4 и 5 разряды в каждой цифре числа
Всем доброго времени суток. Есть задание, которое нужно выполнить на ассемблере. Ввести число в...

Как обратится к элементу управления Button в цикле?
Всем привет. Помогите пожалуйста. Как обратится к button? На button ругается. for...

14
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
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;
}
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 00:53  [ТС] 3
pos - ето количество цифр числа ch???
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
09.03.2010, 01:06 4
да, pos - номер числа считая справа, т.е. для числа 123456, pos = 2 - это цифра 5
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 01:26  [ТС] 5
Работает, только не выводит последнюю цыфру???

И если больше 10 цифр, выводит неправильно, может ето иза типа данных????
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
09.03.2010, 01:42 6
MILAN, проверьте http://codepad.org/M7idKHyv
1
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 01:55  [ТС] 7
Все работает, но стоит мне увеличить число, например 12345678910111213, и выводит бред!!!! При етом я делаю тип числа unsigned long long int!!!! Вот почему часть выводит нормально, а часть - мусор из памяти: 31211101984603605???

M128K145, вы уш меня извините за глупые вопросы!!!!!
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
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;
}
1
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 02:35  [ТС] 9
Огромное спасибо!!!!

Добавлено через 23 минуты
Еще один вопрос, что значит ошибка : error C2659: '=' : function as left operand
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
09.03.2010, 02:42 10
MILAN, в какой строке. Вы неправильно присваиваете что-то
0
899 / 793 / 186
Регистрация: 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 строка!!!!
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
09.03.2010, 03:06 12
у вас для начала не объявлены переменные i, dec, n.
Чисто логически я могу предположить, что i типа int, но я не понимаю в чем заключается суть неявного приведения int к типу int?
0
899 / 793 / 186
Регистрация: 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;
}
Как думаете, в чем ошыбка???
0
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
09.03.2010, 03:24 14
1) в глобальных переменных. Их быть не должно.
2) Зачем под переменную, которая может принимать значения [1, 21] выделять 8 байт?
Вы допустили ошибку когда функцию OctToDec вырвали из какого-то кода, не до конца разобравшись как она работает и что использует
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
09.03.2010, 03:45  [ТС] 15
Спасибо, все понял и исправил!!!!
0
09.03.2010, 03:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2010, 03:45
Помогаю со студенческими работами здесь

Как обратится к ComboBox если он находится в цикле
Парни, что то я торможу, хочу сделать заполнение нескольких комбобоксов в цикле, но вылезает...

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

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

По заданному X нужно в массив записать следующие числа записанные в массив раздельно по каждой цифре числа
Помогите сделать следующее или посоветуйте как сделать это иначе. Пример: Пусть X=3. Мне по...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru