Dual / Dezimal Umrechner



  • Hallo, ich bin neu hier.
    Ich habe da ein Problem mit meinem Dual / Dezimal Umrechner.

    Das Programm sollte zuerst die Dualzahl als Array einlesen und es dann als
    Dezimalzahl ausgeben.

    Leider klappt es nicht ganz. Das Programm gibt mir falsche Werte aus

    Kann mir da einer helfen? Oder kennt vielleicht einer irgendwelche Quellen?

    Danke im Vorraus ­čśâ
    Hier der Source

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

    int fDezimal (int dual[])
    {
    int i,x,wert,Ergebnis,I;

    x=1;
    for(i=0;i<10;i++)
    {

    wert = dual[i]* x;
    Ergebnis = Ergebnis + wert;
    x*2;
    }
    printf("%d\n\n",Ergebnis);
    }
    int main(int argc, char *argv[])
    {
    int abfrage;
    int Ergebnis;
    int dual [10];
    int i;
    printf("RECHNER F├ťR DIE UMRECHNUNG VON ZAHLENSYSTEMEN\n\n");

    printf("\n\nBitte geben Sie jetzt die Dualzahl ein\n\n");
    for(i=0; i<10; i++)
    {
    scanf("%d",& dual[i]);
    }

    printf("Die Dualzahl lautet: ");
    printf("%d",dual[0]);
    printf("%d",dual[1]);
    printf("%d",dual[2]);
    printf("%d",dual[3]);
    printf("%d",dual[4]);
    printf("%d",dual[5]);
    printf("%d",dual[6]);
    printf("%d",dual[7]);
    printf("%d",dual[8]);
    printf("%d\n\n\n",dual[9]);

    printf("Bite die gew├╝nschte umrechnung ausw├Ąhlen!\n\n\a");
    printf("<1> Umrechnung in Dezimal\n");
    printf("<2> Umrechnung in Hexadezimal\n");
    printf("<3> Umrechnung in Oktal\n\n");

    printf("<4> Programm beenden\n\n");

    printf("Bite die gew├╝nschte umrechnung ausw├Ąhlen! < >\b\b");
    scanf("%d",& abfrage);

    switch(abfrage)
    {
    case 1: printf("\n\nAuswahl 1\n\n");

    Ergebnis = fDezimal(dual);

    break;

    case 2: printf("\n\nAuswahl 2\n\n");

    break;

    case 3: printf("\n\nAuswahl 3\n\n");

    break;

    case 4: printf("\n\nAuswahl 4\n\n");

    break;

    default: printf("\n\nUnbekannte Auswahl\n\n");
    }

    system("PAUSE");
    return 0;
    }



  • Es gibt hier Code-Tags, damit sieht der Quellcode sch├Âner aus.

    printf("Die Dualzahl lautet: "); 
    printf("%d",dual[0]); 
    printf("%d",dual[1]); 
    printf("%d",dual[2]); 
    printf("%d",dual[3]); 
    printf("%d",dual[4]); 
    printf("%d",dual[5]); 
    printf("%d",dual[6]); 
    printf("%d",dual[7]); 
    printf("%d",dual[8]); 
    printf("%d\n\n\n",dual[9]);
    

    Geht sicher auch in einer Schleife.

    Ergebnis = Ergebnis + wert;
    

    Du addierst immer einen Wert. Aber welchen Wert hat Ergebnis, wenn du damit anf├Ąngst?

    Deine fDezimal sollte eigentlich einen int Wert zur├╝ckliefern, wenn sie es im Funktionskopf schon ank├╝ndigt.



  • SeppSchrot schrieb:

    Ergebnis = Ergebnis + wert;
    [/cpp]
    Du addierst immer einen Wert. Aber welchen Wert hat Ergebnis, wenn du damit anf├Ąngst?

    Deine fDezimal sollte eigentlich einen int Wert zur├╝ckliefern, wenn sie es im Funktionskopf schon ank├╝ndigt.

    Ich denke das Ergebnis hat am Anfang den Wert 0.
    Das Egbebnis sollte eigentlich die Werte, die die Variable "wert" liefert auffangen und es dann sp├Ąter ausgeben.

    Aber leider gibt das Programm viel zu hohe werte aus

    Ich verstehe nicht was ich falsch gemacht habe.
    Liegt es vielleicht an der Syntax?



  • zoj_neu schrieb:

    Ich denke das Ergebnis hat am Anfang den Wert 0.

    Nicht denken, selbst daf├╝r Sorge tragen ­čśë



  • LordJaxom schrieb:

    zoj_neu schrieb:

    Ich denke das Ergebnis hat am Anfang den Wert 0.

    Nicht denken, selbst daf├╝r Sorge tragen ­čśë

    Also hat es nicht den Wert 0, oder wie???

    Ist die Rechnung wenigstens so richtig?

    for(i=0;i<10;i++)
    {

    wert = dual[i]* x;
    Ergebnis = Ergebnis + wert;
    x*2;
    wert = 0;
    }



  • Um es noch einmal in aller deutlichkeit zu sagen:
    Wenn du in C eine Variable definierst, dann macht der Compiler keinerlei Versprechen, auf welchem Wert sie zu diesem Zeitpunkt gesetzt ist.

    Au├čerdem habe ich dir gesagt, dass du bitte Code Tags verwenden sollst!

    wert = 0;
    

    Die letzte Zeile kannst du dir wiederum sparen, denn bis die Variable das n├Ąchste mal ausgelesen wird, wird sie neu gesetzt.



  • x *= 2;


Log in to reply