2015-07-24 3 views
-2

Я хочу, чтобы число присутствовало в указанной цифре в числе. Предположим, что номер «123456789», и мне нужно вернуть номер в позиции 3 слева. Может ли кто-нибудь помочь мне сделать это на C++.Поиск номера с определенной цифрой в числе

+3

Является ли число целым числом или строкой? Вопрос неясен. –

+0

integer @VioletGiraffe –

+1

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что ученик не проявил никаких усилий, чтобы решить свою домашнюю работу. – Slava

ответ

0

Это должно вернуть третью цифру цифры!

cout << "Enter an integer"; 
int number; 
cin >> number; 
int n = number/100 % 10 

Или (для всех цифр):

int number = 12345; 
int numSize = 5; 
for (int i=numSize-1; i>=0; i--) { 
    int y = pow(10, i); 
    int z = number/y; 
    int x2 = number/(y * 10); 
    printf("%d-",z - x2*10); 
} 
+1

Есть ли способ добавить все цифры в число простым способом? –

+0

Надеюсь, мои правки полезны :) – Kurt

+2

Но ОП указал, что ему нужна третья цифра из * left *, а не справа *. – FredK

2

Чтобы получить цифру в любом месте, в количестве, чем вы можете использовать простое преобразование строки:

int foo = 123456789; 
int pos = 3; 
// convert to string and use the [] operator 
std::cout << std::to_string(foo)[pos - 1];//need to subtract 1 as C++ is 0 index based 
+0

Когда вы даете полный код для домашней работы студента, вы действительно не помогаете ему ни на этом сайте. Особенно, когда этот ученик не проявлял никаких усилий, чтобы сделать домашнее задание самостоятельно. – Slava

+0

@Slava Более вероятно, что они не смогут использовать его в любом случае, если это домашнее задание как пример домашнего урока, который я видел в этом типе вопроса, нужно использовать деление и модулю. – NathanOliver

+0

@Slava Это не моя домашняя работа. Я новичок в программировании и пытаюсь решить основные проблемы в хакерранке. Я знаю, что есть способ решить это, используя деление и модулю. Я просто искал эффективный способ ... Спасибо за поддержку ур. –

0

Использование std :: stringstream

std::string showMSD3(int foo) 
{ 
    std::stringstream ssOut; 

    std::string sign; 
    std::stringstream ss1; 
    if(foo < 0) { 
     ss1 << (-1 * foo); 
     sign = '-'; 
    } 
    else 
     ss1 << foo; 

    std::string s = ss1.str(); 

    ssOut << "    foo string: '" 
     << sign << s << "'" << std::endl; 

    if(s.size() > 2) 
    { 
     ssOut << " Most Significant Digit 3: " 
      << s[2] // 1st digit at offsset 0 
      << "\n   has hex value: 0x" 
      << std::setw(2) << std::setfill('0') << std::hex 
      << (s[2] - '0') 
      << std::endl; 
    } 
    else 
     ssOut << "      Err: foo has only " 
      << s.size() << " digits" << std::endl; 

    return (ssOut.str()); 
} 

и с omewhere ближе к основным (возможно, главный):

// test 1 
    { 
     std::cout << showMSD3(123456789) << std::endl; 
    } 

    // test 2 
    { 
     std::cout << showMSD3(12) << std::endl; 
    } 

    // test 3 - handle negative integer 
    { 
     std::cout << showMSD3(-123) << std::endl; 
    } 

с выходом

   foo string: '123456789' 
Most Significant Digit 3: 3 
      has hex value: 0x03 

       foo string: '12' 
         Err: foo has only 2 digits 

       foo string: '-123' 
Most Significant Digit 3: 3 
      has hex value: 0x03 
Смежные вопросы