Extended ASCII und Strings



  • cooky451 schrieb:

    if (s[i] == ' ')
    

    Wär jetzt so meine naive Idee.

    funktioniert nicht, schon ausprobiert.

    Ahja ich darf natürlich kein cin<< verwenden sondern muss getline nehmen, richtig?


  • Mod

    Für welches Problem? Was funktioniert nicht? Was hast du genau gemacht? Wieso muss ich so viele Gegenfragen stellen?

    In einem mit operator>> gelesenen string kommen naturgemäß keine Leerzeichen vor, dies sollte die gezeigte Funktion jedoch korrekt funktionierend feststellen.



  • SeppJ schrieb:

    Für welches Problem?

    Afgabe lautet: Aus einem string soll eine Integerzahl gemacht werden. Die Leerzeichen vor der ersten Zahl sollen ignoriert werden. Falls die Zahlenfolge durch eine Zahl unterbrochen wird, soll ein Fehler ausgegeben werden. Falls ein Leerzeichen die Zahlenfolge unterbricht soll der String dort abgeschnitten werden und die Zahl ist dann gültig. Es darf nur der Elemenzugrif [], die Zuweisung =, Addition usw verwendet werden. Also keine dieser vordefinierten Funktionen.



  • Namal schrieb:

    Falls die Zahlenfolge durch eine Zahl unterbrochen wird, soll ein Fehler ausgegeben werden.

    Hä?



  • cooky451 schrieb:

    Namal schrieb:

    Falls die Zahlenfolge durch eine Zahl unterbrochen wird, soll ein Fehler ausgegeben werden.

    Hä?

    Ich meinte ein Zeichen, das keine Zahl ist. In der Aufgabe steht kein Wort davon, wie die Strings an diese Funktion übergeben werden sollen, ich nehme an, sie sollen aus einem Vektor eingelesen werden.



  • Ich verstehe zwar überhaupt nicht was die Aufgabe mit deiner ursprünglichen Frage zu tun hat, aber das wirkt auf mich als solltest du atoi ohne Overflow-Protection nachbauen, das sind so in etwa 8 Zeilen.



  • cooky451 schrieb:

    Ich verstehe zwar überhaupt nicht was die Aufgabe mit deiner ursprünglichen Frage zu tun hat, aber das wirkt auf mich als solltest du atoi ohne Overflow-Protection nachbauen, das sind so in etwa 8 Zeilen.

    Wie bzw wo kann ich nachschauen wie dieses atoi aussieht?



  • Ehm ja.. bis auf die Ausgabe der Zahlen klappt es.

    #include <iostream> 
    #include <string>
    
    using namespace std;
    
    int Convert (const string &st){
    	/*Anzahl vorderer Leerzeichen bestimmen*/
    	string newstr;	
    	int i=0;
    	for(int k=0; k<st.length();++k){
    		if(st[k]==' ') 
    			++i;
    		else
    			break;		
    	}
    
    /*Ohne vordere Leerzeichen schreiben*/
    	for(int k=0; k<st.length()-i;++k)
    		newstr+=st[k+i];	
    
    /*Abschneiden falls Leerzeichen mitten im String*/
    	int newlength;
    	bool abschneiden = false;
    	for(int k=0; k<newstr.length();++k)
    		if (newstr[k]==' '){ 
    			newlength=k;
    			abschneiden=true;
    		}
    
    	if (abschneiden){
    		string astr;
    		for(int k=0;k<newlength;++k)
    			astr[k]=newstr[k];
    		newstr=astr;
    	}
    
    	int zahl=0,multiplier=1;
    	for(int k=0; k<newstr.length();++k){
    		if((newstr[k]<'0' && newstr[k+1]>='0' )||(newstr[k]>'9' && newstr[k+1]<='9')){
    			return -1;
    			break;
    		}
    		else{
    			zahl+=(newstr[k]-'0')*multiplier;
    			multiplier*=10;
    		}	
    	}
    
    return zahl;
    
    }
    
    int main(){
    
    cout<<"String eingeben: ";
    string st;
    getline(cin,st);
    
    cout<<Convert(st)<<'\n';
    
    }
    

    Ich hab zwei fragen zu Zeile 46 .47: reicht es wenn ich die '0' abziehe und wie kann ich mit der letzten Zahl im String anfangen, da die Zahlen jetzt offensichtlich umgehdreht angezeigt werden.


  • Mod

    Was macht die NASA vorm Raketenstart?



  • Einen Countdown! Einen Countdown! *streberischinderletztenreiherumfuchtel*
    Und bei wichtigen Ereignissen macht das auch eine Frau mit sexy Stimme! *fuchtel*



  • Decimad schrieb:

    Einen Countdown! Einen Countdown! *streberischinderletztenreiherumfuchtel*
    Und bei wichtigen Ereignissen macht das auch eine Frau mit sexy Stimme! *fuchtel*

    Den hat von Braun erfunden ! :xmas2:


Anmelden zum Antworten