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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> цифра в числе 
:(
    Опции темы
g27
Дата 22.3.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



подскажите как реализовать задачу, надо вывести сколько разных цифр в числе. Поиск строки в строке в знаю, а как вот проверит есть ли какая-то цифра в числе?! спасибо.
PM MAIL Skype   Вверх
Acer
Дата 22.3.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

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



Сделай из числа строку и найди символ
PM MAIL   Вверх
SVN74
Дата 22.3.2009, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

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



Цитата(g27 @  22.3.2009,  11:17 Найти цитируемый пост)
Поиск строки в строке в знаю, а как вот проверит есть ли какая-то цифра в числе?! спасибо. 

isdigit()

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

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



Код

    int c = 1432;
    char *s = new char[10];
    itoa( c, s, 10 ); //теперь s == "1432"

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


Эксперт
****


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

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



эка у вас все сложно-то...
вот мой вариант:
Код

    int counts[10] = {0};
    int i = 1331;

    while(i){
        ++counts[i%10];
        i = i/10;
    }
    
    for (int j=0;j<_countof(counts); ++j)
    {
        if(counts[j]!=1) continue;
        std::cout<<counts[j]<<' ';
    }



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


Бывалый
*


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

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



Код

     int p;
    int c = 1432;
    char *s = new char[10];
    itoa( c, s, 10 );
    p = strchr(s, '4'); \\ invalid conversion from `const char*' to `int' 


что не так?
PM MAIL Skype   Вверх
Soah
Дата 22.3.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(g27 @  22.3.2009,  12:30 Найти цитируемый пост)
int p;


strchr()
Цитата

Функция strchr() возвращает указатель

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


Бывалый
*


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

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



вроде пошло, спасибо.
PM MAIL Skype   Вверх
mes
Дата 22.3.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



вот без строк :
Код

char digits[10] = { 0 };

long value =985345;

int value_len = 0;
for  (long val=value; val || !value_len; val/=10 )
{
      ++value_len; // подсчет длины
      ++digits[abs(val%10)] ; // подсчет кол-ва каждой цифры
}
std::cout << "значение " << value << std::endl;
std::cout << "содержит " << value_len << "цифр" << std::endl ;
std::cout << "     из них :" << std::endl;
int value_unicount =0;
for (int i=0; i<10; ++i)
{
    if (digits[i]) ++value_unicount;
    std::cout <<"        "<< i<<"  -  " << (int) digits[i] <<" штук" << std::endl;
}
std::cout <<"    уникальных "<< value_unicount <<" штук" << std::endl;



Подправлено с учетом замечаний товарища Soah. Спасибо smile

только заметил, что у jonie тоже без строк smile

Это сообщение отредактировал(а) mes - 22.3.2009, 15:44


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


Опытный
**


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

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



Цитата(g27 @  22.3.2009,  11:17 Найти цитируемый пост)
сколько разных цифр в числе

а число может быть и отрицательным?
PM MAIL   Вверх
Dmi3ev
Дата 22.3.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



немного изменив код jonie, но оставив его логику
Код

int main()
{
    int counts[10] = {0};
    int i = 1129;
    while(i)
    {
        ++counts[abs(i%10)];//отрицательное число тоже можно теперь
        i = i/10;
    }

    for (int j=0;j<10; j++)
    {
        if(counts[j]>=1)//у jonie условие выводило только уникальные цифры!!!
          cout<<"number: "<<j<<" how many: "<<counts[j]<<endl;
    }
    cin>>i;
    return 0;
}
 


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

PM MAIL   Вверх
mes
Дата 22.3.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Dmi3ev @  22.3.2009,  13:09 Найти цитируемый пост)
    while(i)
    {
        ++counts[abs(i%10)];//отрицательное число тоже можно теперь

а если i =0 ?  smile 


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


Эксперт
***


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

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



Цитата

а если i =0 ? 

дурцких случаев не рассматривал... можно поставить условие
Код

if (i==0)
 ++counts[0];

или использовать 
Код

do 
//...
while();

 smile 
mes, любишь ты находить косячки... Дотошный, в хорошем смысле этого слова... Молодец!


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

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


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

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


 




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


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

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