typumwandlung



  • schade das es nicht so einfach ist:

    int zahl1, zahl2;
    int zahlen[2];
    zahlen[0] = getch();
    zahlen[1] = getch();
    zahl1 = atoi(zahlen[0]);
    

    da muss ich wohl noch ein wenig tüfteln

    mfg



  • Hä? Warum einfach wenns auch kompliziert geht 😕
    Müsste es denn nicht so gehen:

    char ch='5';
    int zahl=ch-'0';
    

    Ich würde dir aber boost::lexical_cast<int>(ch); empfehlen!



  • mein problem ist das ich mit getch() eine zahl einlesen,
    diese "zahl" und nicht den ascii wert in einer integer variable speicher und sie dann verrechnen will.

    das einlesen der Zahl soll außerdem in ein array erfolgen.

    aber du hast recht, ich denke sicher zu kompliziert 😞



  • der Grundgedanke ist einen Taschenrechner zu programieren.
    jetzt ist es raus 🙂



  • Ich hab dir doch gesagt wie es geht! Du ziehst '0' ab, nicht 0! Probier es aus! Erklärung: nehmen wir mal an, 0 ist in ascii als 20 kodiert. Dann ist 5 mit 25 kodiert. Wenn du jetzt nen char hast der '5' ist und den direkt in int umwandelst, ergibt das 25. Wenn du aber vorher '0' abziehst, ist dein int nu 25-20=5!
    Achja: Mit "warum einfach wenns auch kompliziert geht", meint ich, das ihr die Sache meiner Meinung nach viel zu kompliziert angeht!



  • Du hast natürlich recht, mit einem char kann man das so machen. Aber meine Version funktioniert halt auch mit einem char-Array - man kann auch Zahlen mit mehr als einer Stelle umwandeln. Aber deine Lösung reicht für den Fall wohl, vor allem wenn man bedenkt dass mit getch() eingelesen wird.



  • danke nochmals euch beiden.

    ich werde jaegers ansatz verwenden.

    char zahlen[2];
    zahlen[0] = getch();
    char *ch0 = new char(zahlen[0]);
    int zahl0 = atoi(ch0);
    

    ich verstehe zwar noch nicht ganz wieso ich da einen pointer setzen muss aber es hat mir sehr geholfen!



  • Also ich will dir nicht reinreden, aber das finde ich einfacher:
    [cpp]char einlesent[i];
    for (int j=0;j<i;++j)
    getch(einlesent[i]);
    char einlesen[i];
    for(int j=0;j<i;++j)
    einlesen[j]=einlesent[i-j];
    int uebers=0;
    for (int j=0; j<i;++j)
    {
    if(!j)
    uebers+=einlesen[j]-'0';
    else
    uebers+=(einlesen[j]-'0')*(pow(float)10,(float)j);
    };[cpp]
    Keine Garantie das das funktioniert, bin in Hektik!



  • danke für deinen vorschlag.

    was benutzt du für einen compiler?
    ich kann in getch() keine parameter übergeben



  • Wies aussieht codest du in C, ich net! Daher benutz ich getch() eigentlich net! Kann sein das das net geht! Aber das umzuformen dürfte net schwer sein! Außerdem ist da glaub ich noch ein Fehler, aner egal... Die andere Variante ist um einigs kürzer, ich glaube ich würde sie auch benutzen...


Anmelden zum Antworten