Определите цифры в данном номере. - PullRequest
3 голосов
/ 11 июня 2009

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

Ответы [ 7 ]

26 голосов
/ 11 июня 2009

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

4692/1000 = 4

4692% 1000 = 692

692/100 = 6

692% 100 = 92

92/10 = 9

92% 10 = 2

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

1 голос
/ 21 мая 2014

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

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 голос
/ 12 июня 2009

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

int i = 12345;

while( i > 0 ){
   int nextVal = i % 10;
   printf( "%d", nextVal );
   i = i / 10;
}
0 голосов
/ 18 октября 2018

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

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

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

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

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

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

0 голосов
/ 02 июня 2014

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

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;
}
0 голосов
/ 29 сентября 2009

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

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

int encoding = 0;
int d;

while (keep_looking()) {
  d = get_digit();
  if (encoding/(2**d)%2 == 0) {
    print(d);
    encoding += 2**d;
  }
}
0 голосов
/ 29 сентября 2009

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

#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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...