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;


Anmelden zum Antworten