Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как разделить цифры? 123= 1,2,3 ? 
V
    Опции темы
toader
Дата 26.6.2009, 14:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



как разделить цифры? вот к примеру если вёл 101101 то чтобы он их записал не как одно а как 6 разных?
PM MAIL   Вверх
Andrew121
Дата 26.6.2009, 14:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 21.6.2009

Репутация: нет
Всего: 1



toader, Читаешь по одной, и разделяешь чем вздумается.
PM MAIL   Вверх
ИванМ
Дата 26.6.2009, 16:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 1
Всего: 23



Если вводится строка char* то просто через оператор[] и функцию atoi. Если вводится число, то легче всего сначала преобразовть в строку, а потом как в первом случае.

PM MAIL   Вверх
jonie
Дата 26.6.2009, 18:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



Цитата
Если вводится число, то легче всего сначала преобразовть в строку, а потом как в первом случае.

проще?!
Код

while(n) {
 char c = (n%10) & 0xFF;
 n/=10;
}
сложно ли?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
zim22
Дата 26.6.2009, 18:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(toader @  26.6.2009,  14:22 Найти цитируемый пост)
как разделить цифры?

определите для начала количество цифр в числе по формуле: log(number) / log(10) + 1
далее для вычленения каждой цифры используйте операции / и %



--------------------
PM MAIL   Вверх
toader
Дата 29.6.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



ухмм.. вот примеру как сделать эту операцию если я вёл 12345 чтобы он дал результат на 1+2+3+4+5?
PM MAIL   Вверх
toader
Дата 29.6.2009, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет




вот я нашол такое.. 5! = 5 * 4 * 3 * 2 * 1 = 120
но мне нужно вот так 12345! = 1 * 2 * 3 * 4 * 5 = 120
PM MAIL   Вверх
Gordon
Дата 29.6.2009, 11:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 2
Всего: 6



Код

int n = 0;
    int result[9] = {0, 0, 0, 0, 0, 0, 0, 0};
    
    cin >> n;

    int tmp = 0;
    int i = 0;

    while(n > 10)
    {
        tmp = n % 10;
        result[i] = tmp;
        n /= 10; 
        i++;
    }
    
    result[i] = n;

    //Все, теперь в массиве твое число, индекс - номер разряда 
    //(или как там наызывается, не помню уже)

    while(i >= 0)
    {
        cout << result[i] << " ";
        i--;
    }
    
    cout << endl;



Только вместо вывода на экран, нужно перемножить... Вроде то что тебе нужно... 
p.s. Только 12345! никак не 120! ))))


--------------------

  
     
PM MAIL WWW   Вверх
toader
Дата 29.6.2009, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Цитата(Gordon @ 29.6.2009,  11:12)
p.s. Только 12345! никак не 120! ))))

 smile 1*2*3*4*5=
1*2=2
2*3=6
6*4=24
24*5=120

smile

Добавлено через 7 минут и 55 секунд
вот я чучуть изменил, но не получается настроить как мне надо как сделать чтобы он показал лиши операцию и результат? 


Код

int main ()
{
int n = 0;
    int result[9] = {0, 0, 0, 0, 0, 0, 0, 0};

    cin >> n;

    int tmp = 0;
    int i = 0;

    while(n > 10)
    {
        tmp = n % 10;
        result[i] = tmp;
        n /= 10;
        i++;
    }

    result[i] = n;

    while(i >= 0)
    {
        cout << result[i] << " ";
        i--;
        cout << result[0]*result[1]*result[2]*result[3]*result[4] << endl;
    }

    cout << endl;
    }


Код

Console:
12345
1 120
2 120
3 120
4 120
5 120


Это сообщение отредактировал(а) toader - 29.6.2009, 11:17
PM MAIL   Вверх
toader
Дата 29.6.2009, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



аха вот понял.. только он повторяет это 5 рас как убрать?

Код

       cout << result[0] << " * " << result[1] << " * " << result[2] << " * " << result[3] << " * " << result[4] << " = " << result[0]*result[1]*result[2]*result[3]*result[4] << endl;


//Console:
//12345
//1 5 * 4 * 3 * 2 * 1 = 120
//2 5 * 4 * 3 * 2 * 1 = 120
//3 5 * 4 * 3 * 2 * 1 = 120
//4 5 * 4 * 3 * 2 * 1 = 120
//5 5 * 4 * 3 * 2 * 1 = 120

PM MAIL   Вверх
Gordon
Дата 29.6.2009, 11:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 2
Всего: 6



Вместо 
Код

while(i >= 0)
    {
        cout << result[i] << " ";
        i--;
        cout << result[0]*result[1]*result[2]*result[3]*result[4] << endl;
    }


напиши

Код

while(i >= 0)
    {
        cout << result[i] << " ";
        i--;
    }

    cout << "= " << result[0]*result[1]*result[2]*result[3]*result[4] << endl;


p.s. 1*2*3*4*5 = 120, но 12345! не равно 120, 120 - это 5!...

Это сообщение отредактировал(а) Gordon - 29.6.2009, 11:58


--------------------

  
     
PM MAIL WWW   Вверх
toader
Дата 29.6.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Цитата(Gordon @ 29.6.2009,  11:56)
p.s. 1*2*3*4*5 = 120, но 12345! не равно 120, 120 - это 5!...

ка как сделать это чтобы работало не только для 5 цифр а и для меньше или больше?


Код

 cout << "= " << result[0]*result[1]*result[2]*result[3]*result[4] << endl;

PM MAIL   Вверх
Gordon
Дата 29.6.2009, 12:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 2
Всего: 6



Код

double p = 1.0;
    while(i >= 0)
    {
        cout << result[i] << " ";
        p *= result[i];
        i--;
    }

    cout << "= " << p << endl;



--------------------

  
     
PM MAIL WWW   Вверх
toader
Дата 29.6.2009, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Цитата(Gordon @ 29.6.2009,  12:57)
Код

double p = 1.0;
    while(i >= 0)
    {
        cout << result[i] << " ";
        p *= result[i];
        i--;
    }

    cout << "= " << p << endl;

щтота не то(( 



Код

5 4 3 2 1 = 1

PM MAIL   Вверх
Gordon
Дата 29.6.2009, 13:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 459
Регистрация: 9.7.2006

Репутация: 2
Всего: 6



У меня все правильно работает, может ты что напутал в коде...
Вот полный вариант:

Код

int n = 0;
    int result[9] = {0, 0, 0, 0, 0, 0, 0, 0};
    
    cin >> n;

    int tmp = 0;
    int i = 0;

    while(n > 10)
    {
        tmp = n % 10;
        result[i] = tmp;
        n /= 10; 
        i++;
    }
    
    result[i] = n;

    //Все, теперь в массиве твое число, индекс - номер разряда 
    //(или как там наызывается, не помню уже)

    double p = 1.0;
    while(i >= 0)
    {
        cout << result[i] << " ";
        p *= result[i];
        i--;
    }

    cout << "= " << p << endl;



--------------------

  
     
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1076 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.