2016-07-05 12 views
2

これは、入力配列をユーザーから受け取り、重複を除去した後に入力配列を入力するコードです。しかし、私は入力配列をこれに組み込む方法が不明で、今はハードコードされた要素を持っています。これはプログラミングの最初の1週間ですので、これが愚かな質問であればお詫び申し上げます。これはコードです:このプログラムに入力配列を組み込む方法

#include <stdio.h> 
#include <stdbool.h> 

#define nelems 8 
int main() 
{ 
    int l[nelems] = {1,2,3,1,4,4,5,6};  

    for(int m=0;m<nelems;m++) 
    { 
     bool wase = 0; 
     for(int n=0;n<nelems && m>n;n++)   
     { 
      if (l[m] == l[n] && m != n) 
       wase = 1; 
     } 
     if (wase == 0){ 
      printf("%d\n", l[m]); 
     } 
    } 

    return 0; 
} 
+0

N 'は、forループでネストで必要とされていない 'N' M 'は常に、' <あなたの質問から明らかではありませんnelems' – Cherubim

+1

質問は「あるので、単に 'nは N'で十分です重複を検出した場合*ユーザ配列の何をしたいのですか*このユーザデータのキャプチャは、コードの実行中にユーザが入力した結果ですか、またはこのデータをデータファイルから読み込むことができますか?もしユーザーからのものであれば、入力した値を持つすべての前のエントリをサイクルスルーし、*非一意*であれば、訂正を促します。あなたのコードを実行し続けるような、受け入れられる方法で、 –

答えて

0

これは必要なものです。

#include <stdio.h> 
#include <stdbool.h> 

#define nelems 8 
int main() 
{ 
    int i; 
    int l[nelems] ; 
    for(i=0;i<nelems;i++) 
    { 
     printf("enter %d number :",i); 
     scanf("%d",&l[i]); 
    } 

    for(int m=0;m<nelems;m++) 
    { 
     bool wase = 0; 
     for(int n=0;n<nelems && m>n;n++)   
     { 
      if (l[m] == l[n] && m != n) 
       wase = 1; 
     } 
     if (wase == 0){ 
      printf("%d\n", l[m]); 
     } 
    } 

    return 0; 
} 
1

forループとscanfを使用してみてください。

int i; 
for(i=0;i<nelems;i++){ 
    scanf("%d",&l[i]); 
} 
0

あなたはint型の配列のように、あなただけの別のものを宣言することができる場合:

int input[nelems]; 

とuser968000のアドバイスに従う、あなたのコンソールで列を入力しているときに入れて持っていることを思い出します各番号の間に空白があります。 それを避けるために、私はむしろ、char型の配列を使用したい、次のように宣言:

char l[nelems] = {'1', '2', '3' /*etc.*/}; 
char input[nelems]; 

user968000が示唆したように、あなたは、のループを作る:

int i; 
for(i=0;i<nelems;i++) 
    scanf("%c", &input[i]); 

この場合、あなたは数字の間に空白は必要ありません。 scanf関数の中に '&'という文字があることに注目してください。私が示したように置くだけで、次のレッスンの内容を確実に理解できます。

入力配列があり、必要に応じて処理できます。

関連する問題