2016-08-03 31 views
0

現在、バイナリ/ 10進変換器を書いていますが、いくつかのエラーが発生しています。私はそれらを修正するいくつかの助けが必要です。無効な型 'long int [long int]'配列の添え字

エラー1:

assignment 1.c:10:23: error: invalid types 'long int[long int]' for array subscript 
scanf("%ld",&num[i]); 

エラー2:

assignment 1.c:11:11: error: invalid types 'long int[int]' for array subscript 
if(num[0]==0){ 

エラー3:

assignment 1.c:20:11: error: invalid types 'long int[int]' for array subscript 
if(num[0]==1){ 

は私が私が作ることがあり、問題は彼らとは何かわからないんだけど明らかな間違い。

#include<stdio.h> 

int main(){ 

    long int num,decimalNumber=0,j=1,remainder,i; 
    int bord; 


    printf("Enter any number any binary number: "); 
    scanf("%ld",&num[i]); 
    if(num[0]==0){ 

    while(num!=0){ 
     remainder=num%10; 
     decimalNumber=decimalNumber+remainder*j; 
     j=j*2; 
     num=num/10; 
    } 
    } 
    if(num[0]==1){ 
    printf("Press '1' for binary\n Press '2' for deciaml"); 
    } 

    printf("Equivalent decimal value: %ld",decimalNumber); 

    return 0; 
} 

プログラムが終了していません。

+7

'num'は' long'で配列ではないので、 'num [0]'は意味をなさない。 'if(num [0] == 0)'をチェックして何を達成しようとしていますか? – Ryan

+0

は完全にその1つを逃した!何をしようとしているのは、入力された数字がバイナリかどうかをチェックすることです(例:最初の数字が '0'の場合はバイナリを知っています)。 – Bronson

+0

@Bronsonでは、代わりに文字を読むことができます。 – mash

答えて

1

コードが非配列のインデックスを作成しようとしています。 @Ryan O'Hara

// bad 
long int num,...,i; 
.... 
if(num[0]==0){ 

代わりに簡単な使用if(num==0){またはOPのコードのために、容疑者if(num != 0){は本当に望まれます。

関連する問題