c++ Eingabe & Buchstaben aus selbiger entfernen.

Siri_

Grünschnabel
Wunderschönen guten Abend erstmal,
ich hab hier ein kleines Programm welches vor sich hin zickt.

Generell gehts darum, Buchstaben aus einer Eingabe zu entfernen und die hinterbliebene Eingabe wieder auszugeben. (Was wann wo passiert, steht durch Kommentare ohnehin dabei.) Dies jedoch, solang der Benutzer will, also nicht immer nur einmal.
Funktioniert beim ersten Durchlauf auch wirklich spitze, nur beim 2. Durchlauf wirds lustig..
Wird hier ein Buchstabe eingegeben, sind im folgenden eingabe[] und ausgabe[] (kommen gleich im Programm vor), leer. (Habs mit Zwischenausgaben überprüft.)

Und ich finde grad wirklich den Fehler nicht.. und wäre für ein die-Nase-Richtung-Fehler-stoßen überaus dankbar.

Code:
char eingabe[80]={0}, ausgabe[80]={0}, buchstabe;
int j=0;

     cout << "Bitte geben Sie eine Zeichenkette ein." << endl;
     cin.getline(eingabe, 80);
     
     
     
     while (buchstabe!='!') { // Programm mit ! beendbar
         cout << "Bitte geben Sie einen Buchstaben ein, der eliminiert werden soll." << 
         endl;
         cin >> buchstabe;
       
       for (int i=0; eingabe[i]!=0; i++) {
            if (eingabe[i]!=buchstabe) {  // suche Buchstabe in eingabe[]
            ausgabe[j]=eingabe[i]; // kopiere eingabe[] in ausgabe[], exkl. buchstabe
            j++; }
            }
            
                for (int i=0; i<80; i++) {
                     eingabe[i]=0; 
                     } // lösche eingabe[]
                
                    for (int i=0; ausgabe[i]!=0; i++) { 
                          eingabe[i]=ausgabe[i]; // kopiere ausgabe[] in eingabe[]
                          }
                          
                          for (int j=0; j<80; j++) {
                               ausgabe[j]=0; 
                               } // lösche ausgabe[]
             
                      
                   
            cout << "Resultat: " << eingabe << endl;    
                       
            
            }
 
Hi.

Du setzt die Variable j nicht wieder zurück und beginnst beim 2ten Schleifendurchlauf im ausgabe Array an der Stelle wo du in der ersten Schleife aufgehört hast.

Übrigens ist das "Löschen" der Arrays unnötig. Du mußt die Strings lediglich ordentlich mit \0 terminieren.

Und ich finde es ja ganz toll, das du dir die Arbeit gemacht hast, den Code per Hand so schön bunt zu machen. Verwende doch einfach das nächste mal die entsprechenden Code Tags [c]...[/c] bzw. [code=cpp]...[/code] :)

Gruß

PS: Zum Kopieren der Strings kannst du auch einfach die strcpy Funktion verwenden.
 
Zuletzt bearbeitet:
Hi.

Du setzt die Variable j nicht wieder zurück und beginnst beim 2ten Schleifendurchlauf im ausgabe Array an der Stelle wo du in der ersten Schleife aufgehört hast.

There you go.. dankeschön. Das wars.
Und auch die anderen Tipps werden bei Gelegenheit bzw. in der eines Tages sicher folgenden advanced-Version verarbeitet.



Und ich finde es ja ganz toll, das du dir die Arbeit gemacht hast, den Code per Hand so schön bunt zu machen. Verwende doch einfach das nächste mal die entsprechenden Code Tags [c]...[/c] bzw. [code=cpp]...[/code] :)


Hüstel. Danke für den Hinweis. Aber so wars immerhin schonmal userfreundlicher als ganz ohne Färberei, und wenn ich schonmal wo so elendiglich um Hilfe fragen muss, dann solls für keinen einen allzu großen Aufwand darstellen. ; )
 
Zurück