2012-03-04 9 views
0

変数が特定の範囲内にあるかどうかを確認するには、数字の間に3つのスペースがある数字の個々の数字を入力します。たとえば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; 
} 
+0

これは、同様の問題に遭遇する人のために更新されたコードです。うまく動作するだけで、スペースはまだ実装されていません。私が知りたいと思っているより単純な解決策がある場合。私はループの実装をよりよく理解しようとしています。 – Stevenfowler16

答えて

0

私はコードを読んでいないので、あなたがそこで何をしているのか分かりません。

しかし、私のサンプルコードを参照してください。それはほとんど必要がありません。

#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

loopLine ++は各ループと呼ばれ、最終的には終了しますが、最後の等価チェックを再確認します。数字は10より大きく0未満ではいけません。

変更するには、最後のelse ifで除算(数字)を呼び出す必要があります。

+0

平等チェックで頭を上げてくれてありがとう、気づかなかった。あなたが入力したものをあなたがあなたがそれを5回印刷したものなので、変数を変更しなかった場合、elseの呼び出し部(数字)を呼び出します。 – Stevenfowler16

+0

それを考え出しました。私は変数を本質的に分割ヌルをレンダリングする呼び出された関数に戻していませんでした。 – Stevenfowler16

関連する問題