![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.107
|
![]() Code:
#include <iostream.h> int main() { char zeile[81], del; int i; do{ cin>>zeile; cin>>del; for(i=0; zeile[i]!='\0';i++) { del=zeile[i]-del; cout<<del; } }while (del!='!'); } ![]() Es sollen irgendwelche Wörter eingegeben werden und bei der 2. Eingabe gibt man einen zu löschenden Buchstaben an, solange bis man ein Rufzeichen eingibt. Also mit ! wird das Programm beendet. z.B. Eingabe: abc, a Ausgabe: bc Eingabe: ! Programm beendet Ich schätze ich hab da viel mist eingebaut und ich weiss auch nimmer weiter... ![]() |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 19.12.2000
Ort: Baden
Alter: 48
Beiträge: 1.867
|
![]() Entweder ich hab da was missverstanden oder das Proggi müsste ein wenig komplizierter aussehen - man kann doch nicht einfach einen Buchstaben von einem Buchstaben subtrahieren?! OK, von mir aus einen Char von einem Char aus einem Char-Array, in Programmierer-Jargon
![]() ![]() Wenn ich das richtig verstanden habe, sollte ja zum Beispiel aus dem Wort "solltevielleicht" das Wort "sotevieeicht" werden, oder? In dem Fall bediene Dich doch eines Hilfsarrays und kopier die Chars mit einer Bedingung hinüber: Code:
#include <iostream.h> int main() { char zeile[81]; char zeileFinal[81]; char del; int i=0; int j=0; do{ cin>>zeile; cin>>del; while zeile[i]!='\0' { if zeile[i]!=del { zeileFinal[j]=zeile[i]; j++; } i++; } }while del!='\0'; for(j=0; j!='\0'; j++) { cout<<zeileFinal[j]; } } ![]() ![]() Viel Erfolg!
____________________________________
Signatur? Nervt ja nur! Avatar? Wunderbar! ![]() |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() Registriert seit: 19.12.2000
Ort: Baden
Alter: 48
Beiträge: 1.867
|
![]() Sorry, hab jetzt ziemlich viel editiert da oben... wollte noch ein vollständiges Proggi draus machen, das Fieber hat mich wieder gepackt
![]() Hoffe es hilft Dir, habe zur Zeit keinen Compiler installiert also kann ich´s nicht ausprobieren, wiegesagt is lang her. Post dann mal, ob Du was damit anfangen konntest. LG
____________________________________
Signatur? Nervt ja nur! Avatar? Wunderbar! ![]() |
![]() |
![]() |
![]() |
#4 | |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.107
|
![]() Zitat:
Vielen Dank für deinen Lösungsvorschlag! Ich werds mal anschauen. Naja aber ich solls selber lösen können. ![]() |
|
![]() |
![]() |
![]() |
#5 |
Inventar
![]() Registriert seit: 19.12.2000
Ort: Baden
Alter: 48
Beiträge: 1.867
|
![]() Noch kann ich´s editieren, soll ich´s löschen?
![]() Naja, ein paar von diesen Sachen muss man mal fertig sehen damit man ein Gefühl für die grundlegenden Techniken bekommt, ist nicht weiter schlimm. Viel Spass und meld Dich noch wenn Du die Lösung hast ![]() LG
____________________________________
Signatur? Nervt ja nur! Avatar? Wunderbar! ![]() |
![]() |
![]() |
![]() |
#6 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.107
|
![]() Hab mal das Programm angeschaut, es waren nur ein paar klitzekleine Fehler (bei if und while runde Klammern) sonst syntaktisch korrekt, aber bei der Ausführung kommt keine Lösung raus und die CPU steigt auf 100% Last.
![]() Vielleicht find ich den Fehler wer weiss? Hmm, ich weiss zwar wie die Schleifen funktionieren aber wie kommt man solche sachen? Wann man sie einsetzt weiss ich auch nicht so genau...bei Fakultät oder Summe ist es zwar logisch aber sonst nicht. Für den Anfänger sehen die Schleifen auf dem ersten Blick verwirrend aus, besonders die verschachtelten... Es ist als ob man ein Rad neu erfinden würde und dafür brauch ich eine Ewigkeit. ![]() Gibt's da einen Trick dafür? |
![]() |
![]() |
![]() |
#7 |
Inventar
![]() Registriert seit: 19.12.2000
Ort: Baden
Alter: 48
Beiträge: 1.867
|
![]() Hmmm... Trick fällt mir da keiner ein. Aber ich bin halt auch der Typ der sich wenn´s sein muss stundenlang das Hirn zermartert bis er einen kleinen Schritt verstanden hat, und irgendwann kommt dann halt ein kleiner Schritt auf den anderen und dann sitzt´s. Wenn man bedenkt dass das ganze schon 5 Jahre her ist bei mir ist doch noch was hängengeblieben denk ich.
Sogesehen bist Du eh am richtigen Weg ![]() ![]() Schleifen sind halt die einfachste (womöglich atomare?) Möglichkeit, mehrere zusammenhängende Elemente zu traversieren => bearbeiten, ausser über einen eindeutigen Indexzugriff oder dergleichen. Der ist aber unpraktisch für mehrere Elemente, deswegen schaust Du einfach bei jedem Element mittels Bedingungen nach ob man bei dem was machen muss oder nicht. Mehr isses nicht. Dann noch von innen nach aussen schaun, welche Befehle Du wo ausführen lässt. In meinem Beispiel das j++ : das steht in der if-Bedingung innerhalb der Schleife, wird also nur erhöht wenn der aktuelle Buchstabe!=del ist. Ein klassischer Fehler wäre, das j++ gleich wie i++ nach der if Bedingung zu schreiben (hätt ich fast wieder gemacht ![]() ![]()
____________________________________
Signatur? Nervt ja nur! Avatar? Wunderbar! ![]() |
![]() |
![]() |
![]() |
#8 |
Hero
![]() |
![]() Code:
#include <iostream.h> int main() { char zeile[81]; char zeileFinal[81]; char del; int i; int j; cin>>zeile; while (zeile[0]!='!') { cin>>del; for (i=0, j=0; zeile[i]!='\0'; ++i) { if zeile[i]!=del { zeileFinal[j]=zeile[i]; j++; } } zeileFinal[j] = '\0'; cout<<zeileFinal; cin>>zeile; }; }
____________________________________
Bibel |
![]() |
![]() |
![]() |
#9 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.107
|
![]() Ja es funktioniert
![]() ![]() Danke für deinen Post! Aber was mich wundert ist die If Anweisung ohne else, wieso geht das trotzdem? ...oder verlangt das if nicht unbedingt einen else...ach jetzt hab ich auch noch probs mit der If-Klausel |
![]() |
![]() |
![]() |
#10 |
Inventar
![]() Registriert seit: 19.12.2000
Ort: Baden
Alter: 48
Beiträge: 1.867
|
![]() So, hab´s jetzt auch hinbekommen. Hier meine Lösung:
Code:
#include <iostream.h> int main(void) { char zeile[81]; char zeileFinal[81]; char del; int i; int j; do{ i=0; j=0; cin >> zeile; cin >> del; while (zeile[i]!='\0') { if (zeile[i]!=del) { zeileFinal[j]=zeile[i]; j++; } i++; } cout << zeileFinal; } while (del!='!'); }
____________________________________
Signatur? Nervt ja nur! Avatar? Wunderbar! ![]() |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|