2016-11-25 7 views
0

私はCで次のタスクを得ました。ユーザーが2つの整数を入力し、n1とn2と呼んでn1 < = n2としましょう。 プログラムは、n1とn2(n1とn2を含む)の間のすべての可能な整数を出力しなければならず、数値のすべての桁の値が増加しています。 たとえば、ユーザが1234と1260を入力した場合、0は4より小さいため、1236,1237,1238,1239は印刷されますが1240は印刷されません。 次に、1356,1357,1358,1359が印刷されます。数値を比較する方法

私は配列を使用することはできません(それ以外の場合は非常に簡単です)。 だから私は、次の擬似コードを思い付いた:

  1. 数n1を取り、それが持っている桁数をカウントループを作成します。
  2. 次に、n1(桁数-1)回を分けるループを作成し、その結果の残りの部分では%を行います。 この時点では、数字が残っています。
  3. 次にn1をもう一度とり、それを2桁の桁数で除算し、結果の残りの部分では%を行います。 この時点で、別の数字が残っています。
  4. 2桁の数字を比較します。最初の桁が2番目の桁より小さい場合は、桁の位置を昇格させて桁を縮め続けます(digitsNum--)。
    • ループステップ2-3-4で行います。
    • すべてチェックアウトすると、n1が出力されます。
    • n1(n1 ++)、(n2まで)
    • をすべてループします。

問題は、私が使用することができますどのようにすべてのrestricionsで、私は実装が私のソリューションは非常に難しい見つけ、そして私が開始すると、私は一つの大きな混乱を得ることです。 どのように改善することができますか?

+0

あなたがこれまでに行ったことを、たとえ間違っていることを示してください。 –

+0

制限は何ですか? – dbush

+0

これまでのところあなたの研究/デバッグの努力を示してください。まず[Ask]ページをお読みください。 –

答えて

0

お手伝いします。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
int main() 
{ 
     int num;; 
     int num2; 
     int flag=-1; 
     int i=0,j=0; 
     int rem,rem2; 
     printf("Enter First Number\n"); 
     scanf("%d",&num); 
     printf("Enter Second Number\n"); 
     scanf("%d",&num2); 
     if(num>num2) 
     { 
       printf("Wrong inputs have given\n"); 
       exit(0); 
     } 
     int div=num2-num; 
     for(i=0;i<=div;i++) 
     { 
       num2=(num+i); 
       rem=(num2)%10; 
       num2/=10; 
       rem2=(num2)%10; 
       if(rem>rem2) 
       { 
         printf("....%d\n",num+i); 
       } 
     } 
     return 0; 
} 
+0

そんなにありがとう!それは私の最初の試みが問題を理解することがはるかに理にかなっています。私はjとフラグ変数の使用法は表示されません。 – Invader

+0

@Invaderこれを書くために私の最後のプログラムを修正しました。だから、jとフラグ変数を削除するのを忘れてしまった。 –

関連する問題