Определите цифры в данном номере.

Я новичок в программировании, и я застрял в проблеме. Я хочу, чтобы моя программа идентифицировала отдельные цифры в данном номере, как если бы я вводил 4692, он должен идентифицировать цифры и распечатать 4 6 9 2, И да, без использования массивов.

7 ответов

Идеальная проблема рекурсии для решения, если вы новичок в программировании...

4692/1000 = 4

4692% 1000 = 692

692/100 = 6

692% 100 = 92

92/10 = 9

92% 10 = 2

Вы должны получить представление о цикле, который вы должны использовать сейчас, чтобы он работал для любого числа.:)

Не написали C-код в год, но это должно сработать.

int i = 12345;

while( i > 0 ){
   int nextVal = i % 10;
   printf( "%d", nextVal );
   i = i / 10;
}

Просто и красиво

void PrintDigits(const long n)
{
    int m = -1;
    int i = 1;

    while(true)
    {
        m = (n%(10*i))/i;
        i*= 10;
        cout << m << endl;

        if (0 == n/i)
            break;
    }
}

Другой подход состоит в том, чтобы иметь две петли.

1) Первый цикл: обратный номер.

int j = 0;
while( i ) {
   j *= 10;
   j += i % 10;
   i /= 10;
}

2) Второй цикл: печатать числа справа налево.

while( j ) {
   std::cout << j % 10 << ' ';
   j /= 10;
}

Предполагается, что вы хотите, чтобы цифры печатались справа налево. Я заметил, что есть несколько решений, которые не имеют этого предположения. Если нет, то достаточно второго цикла.

Вот простое решение, если вы хотите просто напечатать цифры из числа.

#include <stdio.h>
/**
printdigits
*/
void printDigits(int num) {

   char buff[128] = "";
   sprintf(buff, "%d ", num);
   int i = 0;
   while (buff[i] != '\0') {
      printf("%c ", buff[i]);
      i++;
   }
   printf("\n");
}
/*
main function
*/
int main(int argc, char** argv) {
   int digits = 4321;
   printDigits(digits);
   return 0;
}

Я думаю, что идея состоит в том, чтобы печатать неповторяющиеся цифры (иначе это было бы слишком просто)... ну, вы можете отслеживать уже напечатанные целые числа, не имея массива, кодирующего их в другое целое число.

немного псевдо C, чтобы дать вам подсказку:

int encoding = 0;
int d;

while (keep_looking()) {
  d = get_digit();
  if (encoding/(2**d)%2 == 0) {
    print(d);
    encoding += 2**d;
  }
}

Это правильно

int main()        
{
    int number;
    cin>>number;
    int nod=0;
    int same=number;

    while(same){
        same/=10;
        nod++;
    }

    while(nod--){               
        cout<<(int)number/(int)pow10(nod)%10<<"\t";       
    }
    return 0;
}
Другие вопросы по тегам