Zum Inhalt springen

Wörter in einem satz durch ein anderes ersetzen


Psycho~zicke

Empfohlene Beiträge

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...