einzelne String-zahlenwerte zu einer Gesamtzahl summieren - ohne Standardfunktionen



  • Hi,
    wie kann ich einzelne String-Zahlenwerte zu einer gesamtzahl summieren?
    Im Netz habe ich nur Lösungswege mit dem inkludieren verschiedener Methoden, die jedoch auf andere Bibliotheken/ Funktionen verweisen.

    "Um Strings in Zahlenwerte umzuwandeln, bietet C++ einige Standardfunktion an. Im Wesentlichen ist es int atoi(const char str) und char *_itoa( int value,char str, int radix )"
    Sowas darf ich leider nicht verwenden.

    Die eingegebenen Einzelwerte müssen zu einer Gesamtzahl verrechnet werden und die Gesamtzahl muss mit 2 multipliziert ausgegeben werden.
    zB eingegeben wird 3 3 (= also soll daraus dreiunddreizig werden) und das verdoppelt natürlich

    die normale umwandlung ist drin und auch das multiplizieren ist kein Porblem, aber ich schaffe es nicht, aus diesen einzelnen string-Zahlenwerten eine Gesamtzahl zu erstellen.
    Mit dem was ich hab kann ich nur Zahlen unter 10 verdoppeln
    habt ihr Tipps?

    int main()
    {

    string zahl = " ";
    cout << "Bitte geben Sie eine Zahl ein: " << endl;
    getline(cin, zahl);
    int ergebnis = 0;
    
    for (int i = zahl.length() - 1; i < zahl.length(); i--)
    {
    	int  zahl_umgewandelt = (zahl[i] - 48);
    	ergebnis = zahl_umgewandelt * 2;
    	cout << ergebnis << endl;
    }


  • @mmm_1482_ Du sollst nicht die Ziffern mit 2 multiplizieren, sondern die Zahl.

    Also aus "123" soll 123 werden, dann multipliziert (ganz normal mit dem 😉 mit 2 und dann die 246 wieder in einen String "246" wandeln.

    Dazu wirst du atoi und itoa nachprogrammieren müssen.
    Dabei kann man ausnutzen, das das Dezimalsystem ein Stellenwertsystem ist.
    Die Nachbarstellen unterscheiden sich durch den Faktor 10.

    Dazu gibt es auch Beispiele im Forum, beliebt ist das Horner Schema.

    _itoa gehört übrigens nicht zu Standard (sieht man auch an dem _ ), zudem gibt es mit strtol eine bessere Funktion.



  • also wenn du die standardfunktionen nicht verwenden darfst, kannst du das problem lösen, indem du die anzahl der zeichen der zahl ermittelst und dann die entsprechenden zehnerpotenzen addierst.

    12345 ist z.b. 5 zeichen lang und entspricht 1 * 10 ^ 4 + 2 * 10 ^ 3 + 3 * 10 ^ 2 + 4 * 10 ^ 1 + 5 * 10 ^ 0.



  • @DirkB ja genau .. tut mir leid bin gerade echt durch 😃

    ich kenne itoa gar nicht .. muss ich dann man nachschauen

    danke dir



  • @Wade1234
    ja an sowas ähnliches hab ich auch gedacht... nur weiß ich nicht genau wie ich das im code ausformuliere 😕
    definitiv eine schleife, welche die string anzahlen zählt und dann dementsprechend weiterrechnet



  • @mmm_1482_

    string zahl = "123";
    for (int i = 0; i < zahl.length(); i++)
    {       int  zahl_umgewandelt = (zahl[i] - '0');
    	ergebnis = ergebnis * 10 + zahl_umgewandelt; 	
    }
    cout << ergebnis << endl;
    

    Du solltest aber darauf achten, dass im String wirklich nur Ziffern sind.



  • Du solltest aber darauf achten, dass im String wirklich nur Ziffern sind.

    was du bspw. mit

    bool EnthaeltNurZiffern(string &str)
    {
         for(int i = 0; i < str.length(); i++)
         {
              if(str[i] < '0' || str[i] > '9')
              {
                   return false;
              }
         }
    
         return true;
    }
    

    machen kannst.


Log in to reply