Проблема с изменением переменной в цикле - PullRequest
0 голосов
/ 04 марта 2012

Таким образом, задание состоит в том, чтобы запросить переменную в определенном диапазоне, распечатать отдельные цифры чисел с тремя пробелами между цифрами.Например, 1234 должно вывести

0 1 2 3 4
1 2 3 4
2 3 4
3 4 
4

Я почти уверен, что большинство заданий выполнено. У меня просто проблемы с изменением номера переменной в цикле.Число сортируется в правильном операторе if, но затем, когда оно зацикливается вместо числа, спускающегося на цифру (то есть с 2343 по 343), все, что он делает, это печатает одно и то же число 5 раз.Я исследовал в своей книге и посмотрел онлайн, но я не вижу его.Это, наверное, что-то простое, просто не уверен, что.Вот код:

#include <stdio.h>
#include <stdlib.h>
void loopingDigitprinter(int digit);
int division(int* digit);

int main() 
{
    int digitPrint;



    printf("Please enter a number between 0 and 32,767: ");
    scanf("%d", &digitPrint);
    loopingDigitprinter (digitPrint);

    return 0;
}

void loopingDigitprinter(int digit)
{
    int loopLine= 0;
   int thousand;
   int hundred;
   int original;
   original = digit;



    while(loopLine < 4)
    {
        if (digit > 10000 && digit <= 32767)
            {
                thousand = digit/ 1000;
                hundred = digit % 1000;
                printf("%02d%03d\n",thousand, hundred);
                digit %= 10000;


            }
        else if (digit < 10000 && digit > 1000)
            {

              if (original > 10000)
                    {   thousand = digit/ 1000;
                        hundred = digit % 1000;
                        digit %= 1000;
                        printf("%01d%03d\n",thousand, hundred);
                    }
            else
                    {
                        thousand = digit/ 1000;
                        hundred = digit % 1000;
                        printf("%02d%03d\n",thousand, hundred);
                        digit %= 1000;
                    }

            }
         else if (digit < 1000 && digit > 100)
            {
                if (original > 10000)
                    {
                         hundred = digit % 1000;
                         printf("%d\n",  hundred);
                         digit %= 100;
                    }  
                 else if (original < 10000 && original > 1000)
                    {
                        thousand = original / 1000;
                        hundred = digit % 1000;
                        printf("%d%d\n",thousand,digit);
                        printf("%d\n", digit);
                        digit %= 100;
                        digit %= 100;

                    }
                else
                    {
                         thousand = digit/ 1000;
                        hundred = digit % 1000;
                         printf("%02d%03d\n",thousand, hundred);
                        digit %= 1000;
                         thousand = original / 1000;
                         hundred = digit % 1000;
                         printf("%d%d\n",thousand,digit);
                         printf("%d\n", digit);
                         digit %= 100;
                         printf("%d\n", digit);
                         digit %= 10;
                         printf("%d\n", digit);
                     }

             }
         else if (digit < 100 && digit > 10)
            {
                if (original > 10000)
                     {   hundred = digit % 1000;
                         printf("%d\n", hundred);
                         digit %= 10;
                         printf("%d\n", digit);
                     }
                 else if (original < 10000 && original > 1000)
                     {
                         thousand = original / 1000;
                         hundred = digit % 1000;
                         printf("%d\n",hundred);
                         digit %= 10;
                        printf("%d\n", digit);
                    }
                 else if (original < 1000 && original > 10)
                    {
                        thousand = digit/ 1000;
                        hundred = digit % 1000;
                        printf("%02d%03d\n",thousand, hundred);
                        digit %= 1000;
                        thousand = original / 1000;
                        hundred = digit % 1000;
                        printf("%d%03d\n",thousand,digit);
                        printf("%03d\n", digit);
                        digit %= 100;
                        printf("%d\n", digit);
                        digit %= 10;
                        printf("%d\n", digit);

                    }
                else
                   printf("1");
               }

        else if(original > 0 && original < 10)

            {
                 printf("0000%d\n", original);
                 printf("000%d\n", original);
                 printf("00%d\n", original);
                 printf("0%d\n", original);
                 printf("%d\n", original);
                break;
            }



         loopLine++;
        }

        return;
 }

Ответы [ 2 ]

0 голосов
/ 23 апреля 2012

Я не знаю, что вы там делаете, так как я не читал код.

Но обратитесь к моему примеру кода.Это в значительной степени делает все необходимое

#include <stdio.h>
#include <string.h>

int main(int argc, char*argv[]){

int n,k,i=0;

printf("Enter a number please\n");
scanf("%d",&n);

while(i<=n){

    for(k=i;k<=n;k++){

        printf("%d ",k);

    }

    printf("\n");   
    i++;
}

return 0;
}


Output
------
0 1 2 3 4
1 2 3 4
2 3 4
3 4 
4
0 голосов
/ 04 марта 2012

loopLine ++ называется каждым циклом, так что вы в конце концов выходите, но дважды проверьте последние проверки на равенство.Цифра не может быть больше 10 И меньше 0.

Вам может понадобиться вызвать деление (цифру) в вашем последнем else if, чтобы изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...