Char vergleichen



  • Hallo Leute,
    ich bräuchte eure Hilfe
    meine Aufgabestellung ist folgende : Schreiben Sie ein Programm, das zunächst eine Zeichenkette (max. 80 Zeichen) einliest und dann immer wieder ein einzelnes Zeichen einliest und die Zeichenkette ausgibt, die entsteht wenn man das zuletzt eingegebene Zeichen aus der ursprünglichen Zeichenkette entfernt. (Das Programm soll durch Eingabe eines ! beendet werden.)

    #include<iostream>
    using namespace std;
    int main(){
    
    	char satz[23];
    	char a;
    
    	int i;
    	String ausgabe;
    	cin >> satz;
    	cin >> a;
    
    	do{
    
    		for(i= 0; satz[i]!='\0';i++)
    			if(satz[i] != a) //wie kann ich 2 Char miteinenader vergleichen?
    				ausgabe = s[i];//wie kann ich chars aufeinander anhängen?
    
    		}while(a=='!');
    		cout << ausgabe;
    }
    

    danke vielmals nata



  • Dein Programm beinhaltet wesentlich mehr Fehler als auf den ersten Blick erkenntlich 🤡 Drum gehe ich bewusst erstmal nur auf deine beiden Fragen ein.

    zum Vergleich von 2 char reicht ein == oder != da der Wert aus der Ascii-Tabelle verglichen wird.

    Anhängen erfolgt bei Strings (Header string) mittels "+"
    Bei CStrings kannst du über den Index gehen, darfst aber nicht das Nullterminierungszeichen am Ende der Zeichenkette vergessen.

    char foo[100];
    
    foo[0] = 'a';
    foo[1] = '\0';
    


  • danke für deine schnelle antwort. Ich habe einpar fehler verbessern können und das ist mein code, aber ich hätte ich höffe noch letzte frage
    wenn ich eingebe: ich lerne c++
    wird ich ausgegeben, aber ich möchte dass es sp läuft
    eingabe : ich lerne c++
    eingabe : e
    ausgabe : ich lrn c++

    #include<iostream>
    using namespace std;
    int main(){
    
    	char satz[23];
    	char a;
    
    	string ausgabe = " ";
    
    	cin >> satz;
    
    	cin >> a;
    
    	do{
    
    		for(int i= 0; satz[i]!='\0';i++)
    			if(satz[i] != a) 
    				ausgabe += satz[i];
    
    		}while(a=='!');
    		cout << ausgabe;
    }
    

    danke danke vielmals



  • Versuch mal dein Glück mit

    //cin >> satz;
    cin.getline(satz, 23, '\n');
    

    Da Leerzeichen bei cin die Eingabe abschließen und der Rest im Puffer herumschwirrt bis zum nächsten cin.



  • danke , danke , danke...



  • Oder machs gleich mit std::string

    #include <iostream>
    #include <string>
    
    int main()
    {
    	std::cout << "Satz: ";
    	std::string str;
    	std::getline(std::cin, str);
    
    	std::cout << "Zeichen: ";
    	char a;
    	std::cin >> a;
    
    	for (unsigned int i = 0; i < str.length(); ++i)
    	{
    		if (str[i] != a)
    		{
    			std::cout << str[i];
    		}
    	}
    
    	std::cout << std::endl;
    
    	return 0;
    }
    


  • danke für deine Antwort, aber ich bin totale anfänger und desswegen ist diese lösung für mich schwer. in der Angabe ist gegeben, dass mit der eingabe ! soll Programm beendet werden und dabei habe ich gegoogelt und es wird gegeben dass mit exit(0) programm beendet wird. Ich habe ausprobiert und leider funktioniert nicht

    #include<iostream>
    using namespace std;
    int main(){
    
    	char satz[23];
    	char a;
    
    	string ausgabe = " ";
    
    	cin.getline(satz, 23, '\n'); 
    
    	cin >> a;
    
    	if(a== '!')
    		exit(0);
    	else{
    
    		for(int i= 0; satz[i]!='\0';i++)
    			if(satz[i] != a) 
    				ausgabe += satz[i];
    	}		
    
    		cout << ausgabe<< endl;
    
    		return 0;
    }
    

Anmelden zum Antworten