2012-01-16 6 views
1

10進数から2進数に変換しようとしています。C言語、失敗しました、10進数から2進数へ

"実行に失敗しました"という理由はありますか? (私はscanf関数の近くに間違いがあると思う)。

P.S:私は、このプログラムのアルゴリズムはまだ動作していないことを知っていますが、最初にコンパイルしようとしました。あなたが実際に無限ループを実行している

:しかし、私はどんな提案^^

#include <stdio.h> 
    #include <stdlib.h> 
    #include <math.h>   

/** 
* Uebung 1.3 - C Teil 
* Programm, welches eine Integer-Zahl in Binärdarstellung ausgibt. 
*/ 

#define DEBUG 1 

/** Structure of a binary Value */ 
typedef struct{ 
    int size; 
    int* valueInBin; 
    int valueInDec; 
}Wert; 

/** Global variables */ 
//nothing 

/** Functions declarations */ 
void iToBinary(Wert* w); 
void printBinaryValue(Wert w); 

/** Main function */ 
int main(int argc, char** argv) { 

    /* Local variable*/ 
    Wert myVal; 

    printf("Wert als Integer (auch negativ): "); 
    scanf("%d", &(myVal.valueInDec)); 
    DEBUG ? printf("Mein Wert : %i", myVal.valueInDec):printf(""); 
    myVal.size = sizeof(int)*8; 
    DEBUG ? printf("size: %i", myVal.size):printf(""); 

    iToBinary(&myVal); 

    printBinaryValue(myVal); 

    return (EXIT_SUCCESS); 
} 

void iToBinary(Wert* w){ 

    int i,temp = w->valueInDec; 

    w->size = sizeof(w->valueInDec)*8; 

    w->valueInBin = (int*) malloc(sizeof(int) * (int)(w->size)) ; 

    for(i=w->size-1; i>=0; i++){ 
     if(temp > pow(2,i)){ 
      *((w->valueInBin)+i) = 1; 
     } 
     else{ 
      *((w->valueInBin)+i) = 0; 
     } 
    } 
} 

void printBinaryValue(Wert w){ 
    unsigned int i; 

    printf("My int in bin : "); 
    for(i=0; i<w.size; i++){ 
     printf("%i",(*(w.valueInBin)+i)); 
    } 
} 
+3

この質問に「宿題」タグを追加する必要があります。また、エラーの詳細。問題が「実行に失敗しました」以外であることを示す他の指標はありますか? –

+0

コンパイルエラーとは何ですか? –

+0

コンパイルエラーはありません。コードを実行すると「実行に失敗しました」というメッセージが表示されます。Wert als Integer(auch negativ):2 実行に失敗しました(終了値1、合計時間:5秒) – KeyMaker00

答えて

3

の開いているこの問題です。 i++i--に変更してください。

お客様のコードには、機能iToBinaryおよびprintBinaryValueにいくつかのエラーも含まれています。バグをキャッチしよう!

ところで、再帰関数はもっと良い方法でそれを行うことができます!制限がない場合は、それを考えてください。

+0

ニース! FlopCoderありがとうございます! – KeyMaker00

+0

Mmmh私はiToBinaryとprintBinaryValueで私のエラーが表示されないことを認めました:s – KeyMaker00

+0

あなたは正しいです、再帰関数ははるかに良いことができます! (私はそれについて考えることさえできませんでした!) – KeyMaker00

関連する問題