Zum Inhalt springen

Psycho~zicke

Mitglieder
  • Gesamte Inhalte

    84
  • Benutzer seit

  • Letzter Besuch

Beiträge von Psycho~zicke

  1. Guten morgen,

    ich bin was VBA Programmieren angeht die absolute Anfängerin. Nun hab ich eine Aufgabe bekommen, wo in Tabelle1 Daten stehen und ich den Kundennamen auslesen soll und in Tabelle2 schreiben soll. Leider bin ich grad ein bissel ahnungslos wie das Funkionieren soll. Habe damit angefangen aber komm nicht weiter.

    Sub Daten_Verschieben()
    
    
        'Zuordnung der Variablen
    
        Dim Zelle As Variant
    
    
        'Zuordnung der Tabellenblätter
    
        Sheets("Tabelle1").Cells(3, 4).Value
    
        Sheets("Summe").Cells(2, 1).Value
    
    
        While Sheets("Tabelle1").AktiveCell.Value <> ""
    
            While Sheets("Summe").AktiveCell.Value = ""
    
                Summe.Cells = Tabelle1.Cells
    
            Wend
    
        Wend
    
    
    End Sub

    Wollte mal fragen ob man den Anfang so lassen kann und evt hat ja jemand einen Tip wie ich weiter machen muss.

    Danke schon mal im Vorraus

    Liebe Grüße die Zicke

  2. Super nun funktioniert es :o))

    Habe aber trotzdem noch mal ne frage und zwar bekomme ich den ersten Datensatz (nach neuer reihenfolge) und den letzten Datensatz (nach alterreihenfolge doppelt ausgegeben. Woran kann das liegen?? Kann es leider nicht feststellen. Danke schon mal im Vorraus.

    #include <stdio.h>
    
    #include <stdlib.h>
    
    #include <string.h>
    
    
    #define MAX 15
    
    #define MAXCHAR 50
    
    #define True 1
    
    #define False 0
    
    
    int Vergleich(const void *s1, const void *s2);
    
    
    void main()
    
    {   
    
        /*
    
        Deklaration  FILE-Zeiger
    
        */ 
    
        FILE *fQuelle;
    
        FILE *fZiel;
    
    
        /*
    
        Daclaration der Variablen
    
        */
    
        char *sZeile2[MAX];
    
        char sZeile[MAXCHAR];
    
        int iZaehler;
    
        int iSortier;
    
        int iTausch;
    
        int Pos;
    
        int i;
    
    
        Pos = 0;
    
        iTausch = 0;
    
        /*
    
        öffnen der Datei
    
        */
    
        fQuelle = fopen("C:\\Kernig~1\\Lookup\\1-1-1.c","r");
    
        fZiel = fopen ("C:\\Kernig~1\\Lookup\\test.c", "w+");
    
    
        /*
    
        Überprüfung ob die Datei geöffnet werden kann
    
        */
    
        if (fQuelle == NULL)
    
        {
    
            printf("Fehler beim Oeffnen der Datei C:\\Kernig~1\\Lookup\\1-1-1.c\n");
    
        }
    
    
        for (iZaehler = 0;iZaehler < MAX ; iZaehler++)
    
        {
    
            /*
    
            Einlesen der aktuellen Zeile aus fQuelle
    
            */
    
            fgets(sZeile, MAXCHAR, fQuelle);
    
    
            /*
    
            entfernen des \n
    
            */
    
            sZeile[strlen(sZeile)-1] = 0;
    
            /*
    
            malloc macht einen Zeiger auf einen freien platz der sZeile +1 länge hat
    
            und übergibt den Zeiger an sZeile2[iZaehler]
    
            */
    
            sZeile2[iZaehler] = malloc(strlen(sZeile)+1); 
    
            /*
    
            Kopie wird von sZeile an sZeile2[iZaehler] gemacht
    
            */
    
            strcpy(sZeile2[iZaehler], sZeile);     
    
        }
    
    
        for (i = 1; i < MAX; i++)
    
        {
    
            for(iZaehler = 0; iZaehler < MAX - i; iZaehler++)
    
            {
    
                if (strcmp(sZeile2[iZaehler+1], sZeile2[iZaehler]) <0)
    
                {
    
                    sZeile2[iTausch] = sZeile2[iZaehler];
    
                    sZeile2[iZaehler] = sZeile2[iZaehler+1];
    
                    sZeile2[iZaehler+1] = sZeile2[iTausch];
    
                }
    
            }
    
        }
    
        for (iZaehler = 0; iZaehler < MAX; iZaehler++)
    
        {
    
            /*
    
            if abfrage damit nur einma die Tabellen überschriften erscheinen
    
            */
    
            if (Pos == 0) 
    
            {
    
            printf("\nName\t    Nachname\t    Alter\n");
    
            ++Pos;
    
            }
    
            /*
    
            Ausgabe der Datensätze bzw inhalte der Einzelnen Zeiger
    
            */
    
        printf("\n%s", sZeile2[iZaehler]);
    
        fputs (sZeile2[iZaehler],fZiel);
    
        }
    
    }
    
    
    int Vergleich(const void *s1, const void *s2)
    
    {
    
        return (strcmp(*(char **)s1, *(char **)s2));
    
    }

  3. Hallo ihr lieben,

    ich habe folgendes Problem. Ich soll ein programm schreiben das Daten aus einer Tabelle einliest die Tabelle dann ordnet und in eine andere Datei ausgibt.

    Bis auf das ordnen klappt auch alles wunderbar. Vllt wisst ihr ja wo mein fehler ist.

    #include <stdio.h>
    
    #include <stdlib.h>
    
    #include <string.h>
    
    
    #define MAX 15
    
    #define MAXCHAR 50
    
    #define True 1
    
    #define False 0
    
    
    void main()
    
    {   
    
        /*
    
        Deklaration  FILE-Zeiger
    
        */ 
    
        FILE *fQuelle;
    
        FILE *fZiel;
    
    
        /*
    
        Daclaration der Variablen
    
        */
    
        char *sZeile2[MAX];
    
        char sZeile[MAXCHAR];
    
        int iZaehler;
    
        int iSortier;
    
        int iTausch;
    
        int Pos;
    
        int i;
    
    
        Pos = 0;
    
        iTausch = 0;
    
        /*
    
        öffnen der Datei
    
        */
    
        fQuelle = fopen("C:\\Kernig~1\\Lookup\\1-1-1.c","r");
    
        fZiel = fopen ("C:\\Kernig~1\\Lookup\\test.c", "w+");
    
    
        /*
    
        Überprüfung ob die Datei geöffnet werden kann
    
        */
    
        if (fQuelle == NULL)
    
        {
    
            printf("Fehler beim Oeffnen der Datei C:\\Kernig~1\\Lookup\\1-1-1.c\n");
    
        }
    
    
        for (iZaehler = 0;iZaehler < MAX ; iZaehler++)
    
        {
    
            /*
    
            Einlesen der aktuellen Zeile aus fQuelle
    
            */
    
            fgets(sZeile, MAXCHAR, fQuelle);
    
    
            /*
    
            entfernen des \n
    
            */
    
            sZeile[strlen(sZeile)-1] = 0;
    
            /*
    
            malloc macht einen Zeiger auf einen freien platz der sZeile +1 länge hat
    
            und übergibt den Zeiger an sZeile2[iZaehler]
    
            */
    
            sZeile2[iZaehler] = malloc(strlen(sZeile)+1); 
    
            /*
    
            Kopie wird von sZeile an sZeile2[iZaehler] gemacht
    
            */
    
            strcpy(sZeile2[iZaehler], sZeile);     
    
        }
    
    
        for (i = 1; i < MAX; i++)
    
        {
    
            iSortier = 0;    
    
    
            for(iZaehler = 0; iZaehler < MAX - i; iZaehler++)
    
            {
    
                if(sZeile2[iZaehler+1] < sZeile2[iZaehler])
    
                {
    
                    iTausch = sZeile2[iZaehler];
    
                    sZeile2[iZaehler] = sZeile2[iZaehler+1];
    
                    sZeile2[iZaehler+1] = iTausch;
    
                    iSortier = 1;
    
                }
    
            }
    
            if(!iSortier)
    
            {
    
                break; 
    
            }
    
        }
    
        for (iZaehler = 0; iZaehler < MAX; iZaehler++)
    
        {
    
            /*
    
            if abfrage damit nur einma die Tabellen überschriften erscheinen
    
            */
    
            if (Pos == 0) 
    
            {
    
            printf("\nName\t    Nachname\t    Alter\n");
    
            ++Pos;
    
            }
    
            /*
    
            Ausgabe der Datensätze bzw inhalte der Einzelnen Zeiger
    
            */
    
            printf("\n%s", sZeile2[iZaehler]);
    
            fputs (sZeile2[iZaehler],fZiel);
    
        }
    
    } 

    Danke schon mal im Vorraus.

    Liebe Grüße die Zicke

  4. Hallo,

    ich schreibe gerade ein Programm das Aus einer Datei eine Tabelle einliest. Danach soll die Tabelle in Richtiger reihenfolge sortiert werden. Das funktioniert auch alles bestens.

    Ich habe da eine Funktion die 2 Strings mit einander Vergleicht und genau da liegt mein Problem.

    int Vergleich(const void *s1, const void *s2)
    
    {
    
        return (strcmp(*(char **)s1, *(char **)s2));
    
    }

    Mir wurde gesagt das das nur so funktioniert. Allerdings verstehe ich nicht wieso ich so viele Zeiger brauche.

    Vllt kann es mir ja jemand erklären. Wäre lieb.

    Liebe Grüße

  5. @ Bubble

    Danke für die anwort. Ich weiß die Kommentare sind auch nicht grad die besten. Vervollständige sie normalerweise wenn ich das Programm fertig habe und es richtig läuft. Das jetzt sind mehr oder weniger nur anhaltspunkte für mich.

    Man kann den Inhalt von "sZeile" ohne hilfsarry umdrehen. Oh ok das wusste ich nicht. Bin davon ausgegangen das es nur so geht.

    Ja genau so hatte ich es eigentlich gedacht, das nach dem Funktionsaufruf in dem aufgerufenen Array die umgekehrte Zeichenkette steht.

  6. Hallo,

    ich hab da ma nen kleines Problem. Ich hoffe zumindest das es ein kleines ist. Ich soll ein Programm schreiben und aussenliegende Funktionen dafür benutzen. Das hat auch sehr gut geklappt. Leider funktioniert der letzte teil mit den Zeigern nicht so wie es soll... Kann mir vllt jemand weiter helfen?? Es kommt keine Fehlermeldung aber ich bekomme den Hexadezimalen wert nicht umgekehrt.

    Ich schreib ich mal meinen Quellcode und die aufgaben beschreibung dazu. Vllt weiß ja jemand woran es liegt...

    Das Fettmakierte ist mein Problemkind...

    Danke schon ma für die hilfe...

    *Schreiben Sie ein Programm das nach eingabe des Wertes und der gewünschten Basis die Zahl umrechnet und ausgibt.
    
    *
    
    *Programm in einzelnen Funktionen schreiben und Zeiger verwenden.
    
    **********************************************************/
    
    
    #include <string.h>
    
    #include <ctype.h>
    
    #include <stdio.h>
    
    #include <math.h>
    
    #include <stdlib.h>
    
    
    #define MAXCHAR 30
    
    
    
    /*
    
    Meldungen an den Kunden und einlesen seiner antworten
    
    */
    
    int iMeldung (int iEingabe, int iPos)
    
    { 
    
        if (iPos == 0)
    
        {
    
            printf ("Bitte geben sie Ihre ganze Zahl ein\n\n");
    
    
            scanf ("%d",&iEingabe);
    
    
            return iEingabe;
    
        }
    
        else
    
        {
    
            printf ("Bitte geben sie die gewünschte Basis an\n\n");
    
    
            scanf ("%d", &iEingabe);
    
    
            return iEingabe; 
    
        }
    
    } 
    
    
    
    /*
    
    Berechnung der GanzenZahl in das gewünschte Zahlensystem mit ergebniss die ganze 
    
    zahl die bliebt
    
    */
    
    int iBerechnungGanzeZahl (int iEingabeZahl, int iBasisZahl)
    
    {
    
        int iGanzeZahl;
    
    
        iGanzeZahl = 0;  
    
    
        iGanzeZahl = iEingabeZahl / iBasisZahl;
    
    
        return iGanzeZahl;
    
    }
    
    
    
    /*
    
    Berechnung der Ganzen Zahl in das gewünschte Zahlensystem mit ergebniss der rest 
    
    der bleibt
    
    */
    
    int iBerechnungRest (int iEingabeZahl, int iBasisZahl)
    
    {
    
        int iRest;  
    
    
        iRest = 0;
    
    
        iRest = iEingabeZahl % iBasisZahl;
    
    
        return iRest;
    
    }
    
    
    
    /*
    
    Umrechnung von iRest in den Zahlenwert
    
    */
    
    int iUmrechnungiRest (int iRest)
    
    {
    
            int iRestNeu;
    
    
            iRestNeu = 0;
    
    
            if (iRest >= 0 && iRest <= 9 )
    
            {
    
                /*
    
                iRest % 10 +'0' = iRest wird umgewandelt auf Basis 10 also einem
    
                Zahlenwert  + 0 Positionen in der Asci Tabelle. Ohne diese umwandlung 
    
                bekommt man das Zeichen ausgegeben das an der Stelle der Asci Tabelle steht 
    
                den wir als rest haben und nicht den Zahlenwert den iRest hat.
    
                */
    
                iRestNeu = iRest % 10 +'0'; 
    
            }
    
    
            return iRestNeu;
    
    }
    
    
    
    /*
    
    Umwandlung der Hexadezimalzahlen in Buchstaben falls iRest größer wie 9 sein sollte
    
    */
    
    void sRestGroesserZehn (char *cBuchstabe, int iBasisZahl, int iRest)
    
    {
    
            if (iBasisZahl > 10)
    
            {
    
    
                switch (iRest)
    
                {
    
    
                    case (10):
    
                    {
    
                         *cBuchstabe = 'A';
    
                    }
    
                    break;
    
    
                    case (11):
    
                    {
    
                        *cBuchstabe = 'B';
    
                    }
    
                    break;
    
    
                    case (12):
    
                    {
    
                        *cBuchstabe = 'C';
    
                    }
    
                    break;
    
    
                    case (13):
    
                    {
    
                        *cBuchstabe = 'D';
    
                    }
    
                    break;
    
    
                    case (14):
    
                    {
    
                        *cBuchstabe = 'E';
    
                    }
    
                    break;
    
    
                    case (15):
    
                    {
    
                        *cBuchstabe = 'F';
    
                    }
    
                    break;
    
                }
    
            }
    
    }
    
    
    [B] void Umkehr (char *sZeile, int iEingabeZaehler)
    
    {
    
        char *sKehrZeile[MAXCHAR];
    
        int iKehrEingabe;
    
    
        iKehrEingabe = 0;
    
       /*
    
        Übergabe der Zeichenkette sZeile an sKehrZeile. die Zeichenkette sZEile wird von hinten nach vorne an 
    
        sKehrZeile übergeben so das das letzte Zeichen bei sKehrZeile als erstes Zeichen steht... 
    
        */
    
        while (iEingabeZaehler > 0)
    
        {
    
            --iEingabeZaehler;
    
            *sKehrZeile[iKehrEingabe] = sZeile[iEingabeZaehler];
    
            ++iKehrEingabe;     
    
        }[/B]
    
    }
    
    
    /*
    
    Beginn des Hauptprogramms
    
    */
    
    void main ()
    
    {
    
        char sZeile[MAXCHAR];
    
        int iEingabeZaehler;
    
        int iEingabe;
    
        int iBasis;
    
        int iGanzeZahl;
    
        int iRest;
    
        int iUmrechnungRest;
    
        char cBuchstabe;
    
        int iPos;
    
    
        cBuchstabe = 'y';
    
        iEingabeZaehler = 0;
    
        iUmrechnungRest = 0;
    
        iEingabe = 0;
    
        iBasis = 0;
    
        iGanzeZahl = -1;
    
        iRest = 0;
    
        iPos = 0;
    
    
        while (iBasis == 0)
    
        {
    
            /*
    
            Meldung an den Kunden welche Zahl er umgerechnet haben möchte und zu welcher Basis.
    
            */
    
            iEingabe = iMeldung(iEingabe, iPos);
    
            ++iPos;
    
            iBasis = iMeldung(iBasis, iPos);
    
    
            if (iBasis > 16 || iBasis == 0)
    
            {
    
                printf ("Zahlen mit einer Basis höher 16 oder Basis 0 können nicht berechnet werden!!!\n\n");
    
                iBasis = 0;
    
            }
    
            iPos = 0;  
    
        }
    
    
        /*
    
        Berechnung der Ganzen Zahl in das gewünschte Zahlensystem
    
        */
    
        while ( iGanzeZahl != 0)
    
        {
    
            /*
    
            Übergabe der errechneten Ganzenzahl an iGanzeZahl. &iZahl übergibt ihre Adresse 
    
            an iZahl in der Funktion. Somit haben beide den selben inhalt und adresse. Es ist 
    
            aber nur eine Kopie der adresse.
    
            */
    
            iGanzeZahl = iBerechnungGanzeZahl (iEingabe, iBasis);
    
    
            /*
    
            Übergabe des errechneten restes an iRest. 
    
            */
    
            iRest = iBerechnungRest (iEingabe, iBasis); 
    
    
            /*
    
            Falls Die Basis 1 ist
    
            */
    
            if (iBasis == 1) 
    
            {
    
                iRest = 0;
    
                iGanzeZahl = 0;
    
            }
    
            if (iRest <= 9)
    
            {
    
                /*
    
                Übergabe des errechnetenwertes an iUmrechnungRest
    
                */
    
                iUmrechnungRest = iUmrechnungiRest(iRest);
    
    
                sZeile[iEingabeZaehler] = iUmrechnungRest;
    
                ++iEingabeZaehler;
    
    
            }
    
            /*
    
            Übergabe des errechnetenwertes (Heximalzahl größer 10) an iRestGroesserZehn.
    
            */
    
            sRestGroesserZehn(&cBuchstabe, iBasis, iRest);
    
    
            if (cBuchstabe != 'y')
    
            {
    
                sZeile[iEingabeZaehler] = cBuchstabe;
    
                ++iEingabeZaehler;
    
            }
    
    
            /*
    
            Übergabe der Werte und Zähler zurücksetzen
    
            */                       
    
            iEingabe = iGanzeZahl;
    
            cBuchstabe = 'y';
    
            iRest = 0; 
    
        }  
    
        /*
    
        Zusammenführung der Einzelnen werte zu einer Zeichenkette
    
        */
    
        sZeile[iEingabeZaehler] = '\0';
    
    
        [B]Umkehr(&sZeile, iEingabeZaehler);[/B]
    
    
        /*
    
        Ausgabe der Umgewandelten Zahl 
    
        */
    
        printf ("Umgewandelte Zahl: %s\n\n", sZeile);    
    
    }
    
    

  7. Guybrush Threepwood:

    das Porblem ist ja das keiner den ich kenne eine Vista cd hat. Alle hatten es vorinstalliert und dann sind ja keine mehr dabei... Den Key hab ich unten am Notebook stehen hab ich grad gesehen...

    Chief Wiggum:

    Ja da kommt keine Fehlermeldung sonst wüsste ich ja was das problem ist. er übernimmt den einfach nicht. Ja habe auch die von samsung probiert aber auch da wird es installiert aber auch nicht übernommen bzw angezeigt.

  8. Ich habe das Notebook samsung R40 plus.

    Der Grafikkartentreiber lässt sich nicht installieren. Ich habe bereits alle Treiber versucht die ich finden konnte.

    Die maus funktioniert auch nicht richtig. Das Scrollen geht seiten verkehrt, scrollt man nach oben geht das bild nach unten aber auch nur ruckhaft und scrollt man nach unten geht das bild nach oben genauso ruckhaft.

    Bei der Recovery CD habe ich nur die auswahl die Festplatte zu kopieren oder windows normal zu starten.

  9. Hallöchen!!!

    Ich hab da mal ne frage und zwar hab ich mir nen notebook gekauft und da ist vista drauf. Nun war dort keine Vista cd dabei. Weiß zufällig jemand wie ich mir so eine cd erstellen kann? Also ich kenne es nur so das ne Betriebssystem cd dabei ist falls mal was ist das man ihn neu aufsetzen kann.

    Ich hoffe hier kann mir jemand helfen.

    Danke schon mal im Vorraus.

    Die Zicke

  10. Hallöchen Leute...

    Ich hab mal wieder ein Problem und hoffe das ihr mir ein wenig weiter helfen könnt... Also ich soll ein Programm schreiben das eine vorhandene Datei öffnet und diese dann in einer anderen Datei die man in dem Programm erzeugt abspeichert... Das ganze soll Zeilenweise passieren. Diesen Teil des Programms hab ich auch bestens hin bekommen. Was mir absolute probleme macht ist das die Kommentare beim auslesen der vorhanden Datei gelöscht werden sollen und dann die Datei Speichern der neuen Datei... Das schwierige für mich is halt auch das er jede art von kommentaren finden soll... welche die mit // beginnen und somit nur eine Zeile lang sind, aber auch /*kommentar*/ diese art die sich über mehrere Zeilen ziehen kann...

    ich schreib euch ma den quellcode und evt kann mir ja jemand weiter helfen... Bin für jede hilfe dankbar...

    /*******************************************************
    
    * Created from :  Sabrina Werner
    
    * Created at   :  23.01.2008
    
    * Updated at   :  24.01.2008
    
    *
    
    * Description  : Kapitel 1, Aufgabe von Stephan
    
    *                
    
    *Schreiben Sie ein Programm, das C- Programmen kopiert und unter 
    
    *einem anderen namen speichert. Es soll im anschluss die kommentare entfernen.
    
    * ********************************************************/
    
    
    #include <stdio.h>
    
    
    int main (void)
    
    {
    
        /*
    
        Deklaration  FILE-Zeiger
    
        */
    
        FILE *fQuelle;
    
        FILE *fZiel;
    
    
        /*
    
        Deklaration der Variablen
    
        */
    
        int iZaehler;
    
        char sZeile[80];
    
        char sAusgabe[80];
    
        int iPos;
    
        int iAusgabenZaehler;
    
    
        /*
    
        Zuordnung der Werte
    
        */
    
        iZaehler = 0;
    
        iPos = 0;
    
        iAusgabenZaehler = 0;
    
    
    
    
        /*
    
        öffnen der Datei
    
        */
    
        fQuelle = fopen("C:\\Kernig~1\\Lookup\\test.c", "r");
    
        fZiel = fopen("C:\\Kernig~1\\Lookup\\Ziel.c", "w");
    
    
    
        /*
    
        Überprüfung ob die Datei geöffnet werden kann
    
        */
    
        if (fQuelle == NULL)
    
        {
    
            printf("Fehler beim Oeffnen der Datei C:\\Kernig~1\\Lookup\\test.c\n");
    
        }
    
        else 
    
        {
    
            printf("Datei erfolgreich geoeffnet.\n");
    
        }
    
    
    
        /*
    
        Überprüfung ob die neue Datei erstellt werden konnte
    
        */
    
        if (fZiel == NULL)
    
        {
    
            printf ("Fehler beim Oeffnen der Datei C:\\Kernig~1\\Lookup\\Ziel.c\n");
    
        }
    
        else
    
        {
    
            printf ("Datei erfolgreich geoeffnet\n");
    
        }    
    
    
    
        /*
    
        Durchlaufen der Schleife bis die Datei zu ende ist. Übergabe der Daten aus 
    
        fQuelle nach fZeile...
    
        */
    
        while(fgets(sZeile, 80, fQuelle) != NULL)
    
        {
    
    
            /*
    
            Finden der Kommentare
    
            */
    
            while (sZeile[iZaehler] != '\n')
    
            {
    
                if (sZeile[iZaehler] == '/' || sZeile[iZaehler] == '*')    
    
                {
    
                    ++iZaehler;
    
                    if (sZeile[iZaehler] == '*' || sZeile[iZaehler] == '/')
    
                    {
    
                        iPos = iZaehler -1;
    
                    }
    
                }
    
    
                /*
    
                Weg lassen de Kommentare
    
                */
    
                if (sZeile[iZaehler] != '/' || sZeile[iZaehler] != '*')
    
                { 
    
                    sAusgabe[iAusgabenZaehler] = sZeile[iZaehler];
    
                    ++iAusgabenZaehler;
    
                    ++iZaehler;
    
                }    
    
            }
    
            /*
    
            Ausgabe der Zeichenkette in der gewünschten Datei
    
            */     
    
            fputs (sZeile, fZiel);
    
    
    
            iZaehler = 0;
    
        }
    
    
    
        /*
    
        Schließung der Dateien
    
        */
    
        fclose(fQuelle);
    
        fclose (fZiel);
    
    
    
        return 0;
    
    
    }
    
    

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

  12. Hab das Problem heute Lösen können. Danke für eure Hilfe...

    Hätte da noch ne frage uns zwar würde ich gern sowas wie ne abfrage/eingabeaufforderung in das Programm bauen... Also quasi "Bitte geben sie den Satz ein. Welches Wort wollen sie ersetzen. Durch welches Wort wollen sie es ersetzen? Und das dann erst der Satz ausgegeben wird... Hab versucht dies in meinen Quelltext einzubauen aber bis auf die erste frage klappts leider nicht... Wahrscheinlich hab ich die befehle an der Falschen stelle oder so... Wäre lieb wenn mir jemand nen Tip geben könnte... Danke schon mal im vorraus...

    #include <stdio.h>
    
    #include <string.h>
    
    #define MAXLINE 40
    
    
    void main ()
    
    {
    
        // deklaration der Variablen
    
        int iEingabe;
    
        char sZeile [70];
    
        int iZaehler;
    
        int iSpalte;
    
        int iLeerPos;
    
        int iSchleife;
    
        int iPos;
    
        int iZurueck;
    
    
        // Zuordnung der Werte
    
        iEingabe = 'w';
    
        iZaehler = 0;
    
        iSpalte = 0;
    
        iLeerPos = 0;
    
        iSchleife = 0;
    
        iPos = 0;
    
    
        printf("\nBitte geben Sie einen Satz ein\n");
    
        while (iEingabe !='A')  // 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 == ' ')    //Überprüfung ob iEingabe  ein Leerzeichen ist
    
            {   
    
                iLeerPos = iZaehler;    // iLeerPos bekommt den Wert von iZaehler und behält ihn so lange bis iZaehler wieder ein Leerzeichen ist.
    
            }
    
            if (iSpalte >= MAXLINE)     // Überprüfung ob iSpalte größer/gleich MAXLINE ist
    
            {
    
                sZeile[iLeerPos] = '\n';    // sZeile gibt ein zeilentrenner aus wenn iSpalte größer/gleich MAXLINE ist
    
                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;    // iZaehler wird hochgezählt
    
            ++ iSpalte;     // iSpalte wird hochgezählt
    
        }
    
        sZeile[iZaehler] = '\0';    //sZeile setz \0 ans ende der Zeichenkette
    
        printf ("\nWelches Wort wollen Sie ersetzen?\n");
    
        while (iSchleife < iZaehler)    // Wird solange ausgeführt wie iSchleife < iZaehler ist
    
        {       
    
            if (sZeile[iSchleife] == 'd')   // Prüft auf welcher Position ein d ist
    
            {
    
                iPos = iSchleife;   //übergabt der Position des d´s an iPos
    
                ++iSchleife;        // iSchleife wird hochgezählt
    
                if (sZeile[iSchleife] == 'i') // Prüft ob der nächste buchstabe ein i ist
    
                {
    
                    ++iSchleife;    // iSchleife wird hochgezählt
    
                    if (sZeile[iSchleife] == 'r')   // Prüft ob der nächste buchstaben ein r ist
    
                    {
    
                    printf ("Durch welches Wort wollen Sie ersetzen?\n");
    
                    iZurueck = iZaehler;    // Über gabe der letzten Position des strings an iZurueck
    
                    while (iZurueck != iPos)        //wird solange ausgeführt wie iZurueck nicht den selben Wert wie iPos hat
    
                    {
    
                        sZeile[iZurueck +2] = sZeile[iZurueck];     // Übergabe des Wertes +2 um die 2 Fehlenden Zeichen zu überbrücken
    
                        -- iZurueck;    // iZurueck wird runter gezählt
    
                    }
    
                    sZeile[iPos] = 'i';    // an aktuelle Position von iPos kommt ein i
    
                    ++iPos;         // iPos wird dochgezählt
    
                    sZeile[iPos] = 'h'; // an aktuelle Position von iPos kommt ein h
    
                    ++iPos;     // iPos wird hochgezählt
    
                    sZeile[iPos] = 'n'; // an aktuelle Position von iPos kommt ein n
    
                    ++iPos;     // iPos wird hochgezählt
    
                    sZeile[iPos] = 'e'; // an aktuelle Position von iPos kommt ein e
    
                    ++iPos;         // iPos wird hochgezählt
    
                    sZeile[iPos] = 'n'; // an aktuelle Position von iPos kommt ein n
    
                   }
    
                }   
    
            }
    
            ++iSchleife;    // Zählt iSchleife hoch
    
        }
    
        printf ("%s", sZeile);      // gibt die Zeichenkette sZeile aus
    
    }
    
    

  13. Hallöchen ihr lieben!

    Ich hab mal wieder ein Problem und hoffe das ihr mir helfen könnt. Ich habe ein Programm geschrieben und möchte in einem satz zb dir durch ihnen ersetzen... Ihnen ist aber länger wie dir und genau da kommt mein Problem. Ich überschreibe mir dann die ersten beiden Buchstaben des nächsten wortes.

    Ich hab mir gedacht, das man das anstatt ne schleife hoch zu zählen die bis zu einer gewissen Position rückwärts laufen lassen kann, so das sie an der richtigen stelle mit dem gewünschten Buchstaben wieder anfängt den Satz im Array auszugeben bzw anzusammeln bevor es ausgeben wird.

    Ich hoffe ihr versteht was ich meine... Schreib euch mal meinen Quelltext mit dazu evt kann mir ja jemand nen rat geben wie ich das am besten anpack...

    #include <stdio.h>
    
    #include <string.h>
    
    #define MAXLINE 15
    
    
    void main ()
    
    {
    
        // deklaration der Variablen
    
        int iEingabe;
    
        char sZeile [50];
    
        int iZaehler;
    
        int iSpalte;
    
        int iLeerPos;
    
        int iSchleife;
    
        int iPos;
    
    
        // Zuordnung der Werte
    
        iEingabe = 'w';
    
        iZaehler = 0;
    
        iSpalte = 0;
    
        iLeerPos = 0;
    
        iSchleife = 0;
    
        iPos = 0; 
    
    
        while (iEingabe !='A')  // Wird ausgeführt solange iEingabe nicht A ist
    
        {
    
            iEingabe = getchar();       // Übergabe der Werte an iEingabe
    
            sZeile [iZaehler] = iEingabe;   // Übergabe der Werte an sZeile 
    
            //++ iZaehler;
    
            if (iEingabe == ' ')    //Überprüfung ob iEingabe  ein Leerzeichen ist
    
            {   
    
                iLeerPos = iZaehler;    // iLeerPos bekommt den Wert von iZaehler und behält ihn so lange bis iZaehler wieder ein Leerzeichen ist.
    
            }
    
            if (iSpalte >= MAXLINE)     // Überprüfung ob iSpalte größer/gleich MAXLINE ist
    
            {
    
                sZeile[iLeerPos] = '\n';    // sZeile gibt ein zeilentrenner aus wenn iSpalte größer/gleich MAXLINE ist
    
                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;    // iZaehler wird hochgezählt
    
            ++ iSpalte;     // iSpalte wird hochgezählt
    
    
        }
    
        sZeile[iZaehler] = '\0';    //sZeile setz \0 ans ende der Zeichenkette
    
        iLetztesZeichen = iZaehler +1;    
    
    
        while (iSchleife < iZaehler)    // Wird solange ausgeführt wie iSchleife < iZaehler ist
    
        {   
    
            if (sZeile[iSchleife] == 'd')   
    
            {
    
                iPos = iSchleife;
    
                ++iSchleife;
    
                if (sZeile[iSchleife] == 'i')
    
                {
    
                    ++iSchleife;
    
                    if (sZeile[iSchleife] == 'r')
    
                    {               
    
                        sZeile[iPos] = 'i';    
    
                        ++iPos;
    
                        sZeile[iPos] = 'h';
    
                        ++iPos;
    
                        sZeile[iPos] = 'n';
    
                        ++iPos;
    
                        sZeile[iPos] = 'e';
    
                        ++iPos;
    
                        sZeile[iPos] = 'n';
    
                        ++iPos;
    
                        sZeile[iPos] = ' ';
    
                    }
    
                }
    
               // sZeile[iSchleife] = 'E';    
    
            }
    
            ++iSchleife;    // Zählt iSchleife hoch
    
        }
    
        printf ("%s", sZeile);      // gibt die Zeichenkette sZeile aus
    
    }
    
    

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