2016-11-13 7 views
1

このプログラムは、ユーザが入力した数字の数字を読み取り、繰り返し数字を確認するものとします。プログラムは、ユーザーが0以下を入力するまで番号を要求し続ける。それは、あなたが繰り返し数字を入力すると、あなたに伝えるという意味で主に機能する。ただし、別の番号から同じ数字を入力すると、それは繰り返し数字と見なされます。たとえば、1つのインスタンスに23が入力され、次に別のインスタンスに23が入力された場合、入力された新しい番号にないにもかかわらず、重複があるとみなされます。どのようにそれを修正するための任意のアイデア?あなたが別の番号呼び出しから同じ数字を入力した場合Cプログラムのエラー(完全にループを終了していません)

#include <stdio.h> 
#include <stdbool.h> //as per C99 standard 

int main (void) 
{ 

bool digit_seen[10] = {false}; 
int digit; 
long n; 

while (1){ 

    printf("Enter a number (enter 0 to terminate the program): "); 
    scanf("%ld", &n); 

    if (n == 0){ 
    break; 
    } 

    while (n > 0){ 
     digit = n % 10; 

     if (digit_seen[digit]){ 
      break; 
     } 

     digit_seen[digit] = true; 
     n /= 10; 
    } 

    if (n > 0){ 
     printf("Repeated digit\n"); 
    } else { 
     printf("No repeated digit\n"); 
    } 
} 

return 0; 
} 
+0

"繰り返し数字"の定義は何ですか? – artm

+0

入力した数字に数字が複数回表示される場合。例えば、数字2324が入力され、繰り返し数字は2です。 – Noah210012

答えて

1

しかし、繰り返しの数字と考えられています。

現状では、digit_seenは一度だけ初期化されており、whileループ外で、それは新しい入力nのために再初期化されませんでした。

bool digit_seen[10] = {false};からwhileループ内に移動する必要があります。それは問題を解決するだろう。

+0

私は知っていますが、それは指示にどのように指定されたかです。完璧に今働いている。ありがとうございました! – Noah210012

関連する問題