Psycho~zicke Geschrieben 13. Dezember 2007 Teilen Geschrieben 13. Dezember 2007 Hallöchen!!! Ich hab mal wieder ein Problem und hoffe das ihr mir helfen könnt... Ich habe ein Programm das mir in einem satz wörter ersetzen soll. Ich hab das soweit auch geschrieben nur fehlt mir leider der Teil wo ich das ersetzende Wort an die stelle des alten wortes setzte. Hab nen absoluten Blackout. Komm einfach nciht drauf wie es gehen könnte... Leider hab ic morgen auch abgabe termin... Ich hoffe das ihr mir auf die Sprünge helfen könnt... Hier mal den Quellcode... #include <stdio.h> #include <string.h> #define MAXLINE 40 void main () { // deklaration der Variablen int iEingabe; char sZeile [50]; char sSuchWort[50]; char sNeuesWort [50]; char sNeueZeile [50]; int iZaehler; int iSpalte; int iLeerPos; int iZurueck; int iSuchWortZaehler; int iAnzahlZeichenZeile; int iPosErstesZeichenSuchWort; int iAnzahlSuchWort; int iNeuesWortZaehler; int iAnzahlNeuesWort; int iNeueAnzahlZeichen; // Zuordnung der Werte iEingabe = 'w'; iZaehler = 0; iSpalte = 0; iLeerPos = 0; iZurueck = 0; iSuchWortZaehler = 0; iAnzahlZeichenZeile = 0; iPosErstesZeichenSuchWort = -1; iAnzahlSuchWort = 0; iNeuesWortZaehler = 0; iAnzahlNeuesWort = 0; iNeueAnzahlZeichen = 0; /* Eingabe des ganzen Satzes */ printf("\nBitte geben Sie einen Satz ein\n"); scanf ("%d", iEingabe); /* Die Eingabe im Array speichern und Automatischer Zeilenumbruch */ while (iEingabe !='\n') // Wird ausgeführt solange iEingabe nicht A ist { iEingabe = getchar(); // Übergabe der Werte an iEingabe sZeile [iZaehler] = iEingabe; // Übergabe der Werte an sZeile if (iEingabe == ' ') { iLeerPos = iZaehler; // iLeerPos bekommt den Wert von iZaehler und behält ihn so lange bis iZaehler wieder ein Leerzeichen ist. } if (iSpalte >= MAXLINE) { sZeile[iLeerPos] = '\n'; iSpalte = -1; // iSpalte bekommt den wert -1 damit iSpalte nach dem Zeilentrenner wieder bei 0 beginnt. -1 Weil iSpalte gleich unten drunter wieder um 1 hochgezählt wird. } ++ iZaehler; ++ iSpalte; } sZeile[iZaehler] = '\0'; // ende der Zeichenkette iAnzahlZeichenZeile = iZaehler; // Übergabe der Anzahl der vorhanden Zeichen im Array /* Eingabe des zu ersetzendes Wortes entgegennehmen */ iEingabe = 0; //sichern ist sichern, auf jeden Fall kein vordefinierter Wert printf ("\nWelches Wort wollen Sie ersetzen?\n"); scanf("%d", iEingabe); /* Abgreifen und Speichern des zu ersetzenden Wortes */ while (iEingabe != '\n') { iEingabe = getchar(); // Übergabe der Werte an iEingabe sSuchWort [iSuchWortZaehler] = iEingabe; // Übergabe der Werte an sSuchWort ++iSuchWortZaehler; sSuchWort[iSuchWortZaehler] = '\0'; } iAnzahlSuchWort = iSuchWortZaehler; // Wertübergabe von der länge des Suchworts --iAnzahlSuchWort; /* Suche nach dem ersetzenden Wort */ iZaehler = 0; //Sicher sein das wir am Anfang der Zeichenkette beginnen iSuchWortZaehler = 0; // Sichern das iSuchWortZaehler am Anfang der Zeichenkette beginnt while ( iZaehler < iAnzahlZeichenZeile) { if (sZeile [iZaehler] == sSuchWort[iSuchWortZaehler]) { /* Speicher die Position des ersten Buchstabens meines zu ersetzenden wortes wenn der erste Buchstabe meines zu suchenden Wortes in meinem satz gefunden wurde */ if (iSuchWortZaehler == 0) { iPosErstesZeichenSuchWort = iZaehler; } /* Das zu ersetzende Wort wurde gefunden */ ++iSuchWortZaehler; if (iSuchWortZaehler == iAnzahlSuchWort) // trifft nur ein wenn das zu ersetzende Wort gefunden wurde { printf ("\nIhr Wort wurde gefunden\n"); break; } } else { // Es wurde nicht das ganze zu suchende Wort gefunden und wird darum auf die ausgangspositionen zurückgesetzt iSuchWortZaehler = 0; iPosErstesZeichenSuchWort = -1; } ++iZaehler; } /* Das ersetzende wort eingeben wenn das wort gefunden wurde */ // iSuchWortZaehler kann nur dann mit iAnzahlSuchWort übereinstimmen wenn das zu ersetzende Wort gefunden wurde if (iSuchWortZaehler != iAnzahlSuchWort) { printf ("\n Ihr Wort wurde nicht gefunden\n"); } else { //sichern ist sichern, auf jeden Fall kein vordefinierter Wert iEingabe = 0; // Entgegen nehmen der Eingabe printf ("\nDurch welches Wort wollen Sie ersetzen?\n"); scanf("%d", iEingabe); // Abgreifen und Speichern der Eingabe while (iEingabe != '\n') { iEingabe = getchar(); // Übergabe der Werte an iEingabe sNeuesWort [iNeuesWortZaehler] = iEingabe; // Übergabe der Werte an sNeuesWort ++iNeuesWortZaehler; sNeuesWort[iNeuesWortZaehler] = '\0'; } iAnzahlNeuesWort = iNeuesWortZaehler; // Wertübergabe von der länge des zu ersetzenden worts --iAnzahlNeuesWort; /* Berechnung der Längenunterschiede */ if (iAnzahlSuchWort > iAnzahlNeuesWort ) { iZurueck = iAnzahlNeuesWort - iAnzahlSuchWort; } if (iAnzahlSuchWort < iAnzahlNeuesWort) { iZurueck = iAnzahlNeuesWort - iAnzahlSuchWort; } /* Verschiebung der Letzen Positionen solange bis die Position des ersten Zeichens vom SuchWort erreicht ist */ iNeueAnzahlZeichen = iAnzahlZeichenZeile; while (iAnzahlZeichenZeile != iPosErstesZeichenSuchWort) { // Übergabe des errechneten Wertes um die fehlenden Zeichen in meiner Kette zu überbrücken sZeile[iAnzahlZeichenZeile +iZurueck] = sZeile[iAnzahlZeichenZeile]; -- iAnzahlZeichenZeile; } iSuchWortZaehler = 0; iNeuesWortZaehler = 0; /* Ersetzung des Wortes */ } } /* Ausgabe der Zeichenkette */ printf ("\n%s\n", sZeile); } Danke schonmal im vorraus... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 13. Dezember 2007 Teilen Geschrieben 13. Dezember 2007 Bitte benutze mal die Suchfunktion des Forums, wir hatten vor einigen Tagen einen ähnlichen Thread mit dem gleichen Problem. Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.