Aus string char einlesen und verarbeiten



  • Hi Leute,

    ich bin ziemlich neu hier (und im c++ programmieren) und wollte mal fragen, ob mir vll jemand weiterhelfen kann. Ich habe folgendes Problem:

    Ich suche die summe des strings. Sobald es auf ein "x" trifft, soll es gelöscht werden und der zähler 2 stellen nach links gesetzt werden. leider klappt dies nicht wir erwartet.

    #include <iostream>
    #include <cstring>
    
    using namespace std;
    
    int main(){
    
    	int i = 0;
    	int b=0;
    	char txt[] = "93752xxx746x27x1754xx90x93xxxxx238x44x75xx08750912738x8461x8759383xx328x4x4935903x6x5550360535004x0xx945958961296x267x8842xxx5x6xx61x4x48482x80xxx83316843x7x4x83x9521731xxx25x51xx457x6x5x9698222x771237745034x5133592x27xx8x87xx35221x36x0x50x23x7x63x998418xx";
    
    	for (int i=0; i<=255; i++){
    
    		if(txt[i] == 'x'){
    			txt[i] = '\0';
    			txt[i] = txt[i-2];
    
    		}
    
    		b+=txt[i]-48;
    
    		cout << txt[i] << " " << b << endl;
    	}
    
    }
    

    danke schonmal für die antworten!



  • Ich verstehe nicht ganz, was die Schleife machen soll, aber die wird schon ziemlich schiefgehen, sobald ganz vorne im String ein x steht ("txt[i-2]")...



  • Mein Tipp wäre, nur hochzählen wenn != 'x' und die Zahlen in eine neue Zeichenkette schreiben. Über die bestehende Zeichenkette zu loopen und dann noch zu manipulieren, führt unweigerlich zu Problemen.



  • _matze schrieb:

    Ich verstehe nicht ganz, was die Schleife machen soll, aber die wird schon ziemlich schiefgehen, sobald ganz vorne im String ein x steht ("txt[i-2]")...

    deswegen steht ja auch am anfang kein x, um es zu vereinfachen!;) es geht ja "nur" um diese exakte zeichenkette!

    was sie macht? ganz einfach: sie addiert 9+3+7+5+2+...+(n-1) und bei x springt sie 2 stellen nach links und addiert dann von dort weiter, also beim ersten x nochmal 5 und 2. aber beim 2. x leider nur noch 2, obwohl es wieder 5 und 2 sein sollte!

    @BasicMan01
    das mit der neuen zeichenkette hatte ich versucht, aber ging nicht, kannst du mir da mal ein beispiel geben? danke


Anmelden zum Antworten