Bräuchte hilfe bei Umrechner für Dezimalzahl in Dualzahl



  • Hallo,
    ich möchte mit dem Borland Builder einen
    Dezimalzahl nach Dualzahl Umrechner erstellen.

    Ich habe 2 Editfelder (Eingabe und Ausgabe),
    eine RadioGroup und einen Button.

    Den Umrechner habe ich schon
    folgendermaßen in den Button
    programmiert:

    void __fastcall TForm1::btnBerechnenClick(TObject *Sender)
    {
    switch(rdgOperation->ItemIndex)
    {
    case 0:
    {
    edtAusgabe->Text=DezimalDual (edtEingabe->Text.ToInt());
    }break;
    }

    AnsiString DezimalDual (int nDezimalZahl);
    {
    AnsiString sDualZahl;
    int nRest;
    int nDezimalZahl
    while(nDezimalZahl > 0)
    {
    nRest=nDezimalZahl%2;
    nDezimalZahl=nDezimalZahl/2;
    if(nRest==0)
    {
    sDualZahl="0"+sDualZahl;
    }
    else
    {
    sDualZahl="1"+sDualZahl;
    }
    }
    return sDualZahl;
    }

    Leider ist noch irgendwo ein Fehler in dem Programm,
    da es mir keinen Wert zurückliefern möchte.
    Ich vermute mal, daß ich irgendwo die Variablen
    durcheinander gehauen habe.

    Vielleicht könnt Ihr mir ja etwas weiterhelfen?



  • http://www.marquardtnet.info/cecke/quickies.1/1_quicky_07.html

    Die Funktion fü den Button ist verunglückt:

    - Du kannst in einer Funktion keine andere definieren
    - Die switch-Anweisung ist hinsichtlich der Klammersetzung nicht ok.
    - das break steht falsch bzw. ist hier überflüssig.

    switch(rdgOperation->ItemIndex) 
    { 
    case 0: 
    edtAusgabe->Text=DezimalDual (edtEingabe->Text.ToInt()); 
    }
    

    dann ist das ganze in die Ereignismehtode des Button zu packen

    void __fastcall TForm1::btnBerechnenClick(TObject *Sender) 
    {
    
    switch(rdgOperation->ItemIndex) 
    { 
    case 0: 
    edtAusgabe->Text=DezimalDual (edtEingabe->Text.ToInt()); 
    }
    
    }
    

    Die Umrechung ist eine extra Definition

    void __fastcall TForm1::btnBerechnenClick(TObject *Sender) 
    {
    switch(rdgOperation->ItemIndex) 
    { 
    case 0: 
    edtAusgabe->Text=DezimalDual (edtEingabe->Text.ToInt()); 
    }
    }
    
    //*****************************
    
    AnsiString DezimalDual (int nDezimalZahl); 
    { 
    AnsiString sDualZahl; 
    int nRest; 
    int nDezimalZahl 
    while(nDezimalZahl > 0) 
    { 
    nRest=nDezimalZahl%2; 
    nDezimalZahl=nDezimalZahl/2; 
    if(nRest==0) 
    { 
    sDualZahl="0"+sDualZahl; 
    } 
    else 
    { 
    sDualZahl="1"+sDualZahl; 
    } 
    } 
    return sDualZahl; 
    }
    

Anmelden zum Antworten