Problem bei Übung

Tutorials.at
Verfügbare Informationen zu "Problem bei Übung"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: niki1 - Xin
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 6
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: Problem bei Übung
  • Letzte Antwort: vor 16 Jahren, 3 Tagen, 9 Stunden, 45 Minuten
  • Alle Beiträge und Antworten zu "Problem bei Übung"

    Re: Problem bei Übung

    niki1 - 11.04.2008, 14:01

    Problem bei Übung
    Hallo Leute,

    mein Lehrer hat uns eine Übung gegeben die wir freiwillig mahcne sollten, so nun will ich sie machen jedoch weiß ich nicht wie ich sie llösen soll , wenn ihr mir doch igendwie helfne könntet.
    Die Aufgabenstellung ist :
    /*
    Angabe
    Schreibe ein Programm, das
    - eine Datei zeilenweise einliest
    - in jeder Zeile das Wort '2AHEL' sucht und
    - wenn es vorkommt die Zeile ausgibt.

    Verwende strcmp aus string.h
    */
    Kann mir jemand Tipps geben , oder vielleicht die Übung löst
    oder nur eine Hilfestellung, ich wäre für alles dankbar.

    Mfg niki1



    Re: Problem bei Übung

    Xin - 12.04.2008, 01:39

    Re: Problem bei Übung
    niki1 hat folgendes geschrieben: Hallo Leute,

    mein Lehrer hat uns eine Übung gegeben die wir freiwillig mahcne sollten, so nun will ich sie machen jedoch weiß ich nicht wie ich sie llösen soll , wenn ihr mir doch igendwie helfne könntet.
    Die Aufgabenstellung ist :
    /*
    Angabe
    Schreibe ein Programm, das
    - eine Datei zeilenweise einliest
    http://www.galileo-press.de/openbook/c_von_a_bis_z/c_018_015.htm
    niki1 hat folgendes geschrieben: - in jeder Zeile das Wort '2AHEL' sucht und
    Also eine Schleife, dass nach dem 1. Buchstaben des Wortes sucht und wenn es den gefunden hat, guckt ob der folgende Buchstabe dem Wort entspricht, bis das ganze Wort erkannt wurde - oder auch nicht. niki1 hat folgendes geschrieben: - wenn es vorkommt die Zeile ausgibt.
    Das solltes so machbar sein ;-)

    niki1 hat folgendes geschrieben: Verwende strcmp aus string.h
    strcmp vergliecht Strings, aber keine Teilstrings - also sagt nicht aus, dass ein String Teil eines anderen String ist.

    Passt nicht zur beschriebenen Aufgabe!?

    niki1 hat folgendes geschrieben:
    */
    Kann mir jemand Tipps geben , oder vielleicht die Übung löst
    oder nur eine Hilfestellung, ich wäre für alles dankbar.
    Vielleicht kannst Du die Aufgabe mal im Wortlaut abschreiben, weil das strcmp passt einfach nicht zum Problem.



    Re: Problem bei Übung

    niki1 - 21.04.2008, 18:07


    Hier ich hab die Lösung von der Übung
    Code: /*
       Angabe 'grep':
       Schreibe ein Programm, das
       - eine Datei zeilenweise einliest
       - in jeder Zeile das Wort '2AHEL' sucht und
       - wenn es vorkommt die Zeile ausgibt.
       
       Verwende strcmp aus string.h
    */

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>


    int main()
    {
       
       
       int i, lenT, lenS;
       char text[100], suche[] = "2AHEL";
       
       
       FILE *in;
       
       in=fopen("test.txt","r");
       
       if(in == NULL)
          {
          perror("Info:test.txt");
          getchar();
          return 1;

          }

       else
          {
          printf("Info:Datei erfolgreich geöffnet\n");
          }



       
       
       printf("Vorkommen von '%s':\n", suche);

       lenS = strlen(suche);
       while(fgets(text, 99, in) != NULL)
       {
          lenT = strlen(text);
          
          for(i=0; i<=lenT-lenS; i=i+1)
          {
             
             if(strncmp(&text[i], suche, lenS) == 0)
             {
                fputs(text, stdout);
             }
          }   
       }
       fclose(in);
       getchar();
       return 0;
    }

    Nur versteh ich nicht warum er das macht : Code: for(i=0; i<=lenT-lenS; i=i+1)
          {
             
             if(strncmp(&text[i], suche, lenS) == 0)
             {
                fputs(text, stdout);
             }

    Kann mir das mal jemand erklären? Und warum macht er da bei strncmp "&text[i]" warum das & , das ist ja nur die Adresse vom String!

    Mfg niki1

    ps.: gibt es auch eine 2 Möglichkeit?



    Re: Problem bei Übung

    Xin - 21.04.2008, 18:48


    niki1 hat folgendes geschrieben: Hier ich hab die Lösung von der Übung
    Code: /*
       Angabe 'grep':
       Schreibe ein Programm, das
       - eine Datei zeilenweise einliest
       - in jeder Zeile das Wort '2AHEL' sucht und
       - wenn es vorkommt die Zeile ausgibt.
       
       Verwende strcmp aus string.h

    Nur versteh ich nicht warum er das macht : Code: for(i=0; i<=lenT-lenS; i=i+1)
          {
             
             if(strncmp(&text[i], suche, lenS) == 0)
             {
                fputs(text, stdout);
             }

    Kann mir das mal jemand erklären? Und warum macht er da bei strncmp "&text[i]" warum das & , das ist ja nur die Adresse vom String!

    Das ist nicht die Adresse vom String, sondern die Adresse(&) von text beim i. Zeichen. wenn Du text übergibst, ist das Identisch zu &text[0] - der Adresse des 0. Zeichens. Du könntest auch text+i schreiben, die Zeichen werden ja nur aufaddiert auf das erste Zeichen. text + i ist aber eher... sagen wir... unschön.



    Was ich nicht verstehe ist, dass Du strcmp verwenden sollst, die Lösung der Aufgabe aber kein strcmp enthält...

    niki1 hat folgendes geschrieben: ps.: gibt es auch eine 2 Möglichkeit?

    Was genau meinst Du mit EINER zweiten Möglichkeit? Es gibt vermutlich hunderte zweite Möglichkeiten. Es gibt aber eine, die für große Texte als besonders hochwertig gilt: Boyer Moore lässt grüßen.



    Re: Problem bei Übung

    niki1 - 21.04.2008, 19:22


    Ja es gibt ja ein strncmp das er verwendet, wahrscheinlich hat er sich verschrieben.

    ich meine damit ob es einen leichteren Weg gibt diese Übung zu lösen.!"



    Re: Problem bei Übung

    Xin - 21.04.2008, 23:11


    niki1 hat folgendes geschrieben: Ja es gibt ja ein strncmp das er verwendet, wahrscheinlich hat er sich verschrieben.
    strncmp ist aber nicht strcmp.
    Wenn Du in der Matheklausur schreibst 1 + 2 = 4 redest Du Dich ja auch nicht raus, dass Du Dich verschrieben hättest. Genausowenig wie Dir Dein Mathelehrer bei 1+2=3 falsch hinschreiben kann mit der Begründung, dass er eigentlich 1+3 schreiben wollte und sich verschrieben hat.

    Für'n Lehrer etwas schlampig - grade im fach Informatik, wenn auch noch C gelehrt wird.

    niki1 hat folgendes geschrieben: ich meine damit ob es einen leichteren Weg gibt diese Übung zu lösen.!"
    In C? Wüßte ich jetzt spontan nicht. Man könnte teile des Codes auf die Shell verlagern und die Datei beim Aufruf reinpipen. (programm < text.txt). Wäre als programm aber nicht mehr identisch.
    In C++? Vielleicht mit Streams...
    Mit einem besseren Framework? Sicherlich.
    In Sprachen, die Zeichenkettenorientiert sind? Sehr wahrscheinlich.

    Ich bringe meinen C-Schülern (bin kein Schul-Lehrer) strcmp usw. gar nicht bei. Die programmieren das von Hand aus. Und die programmieren auch nur am Anfang langsamer...



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    Probleme mit Dev-C++ - gepostet von Mobin am Donnerstag 30.11.2006
    Druckversion - gepostet von Moritz am Mittwoch 20.02.2008
    video automatisch starten? - gepostet von pliman am Donnerstag 03.08.2006
    Eingabe von Zahlen nicht beachten. - gepostet von Kimi am Dienstag 29.01.2008
    splittext - gepostet von DrPhil_Guth am Donnerstag 15.03.2007
    Welche kostenlose Firewall ist die sicherste? - gepostet von Danny am Freitag 13.04.2007
    crt.vpi nicht gefunden - gepostet von necator am Sonntag 17.06.2007
    Ein Programm um eine Nachricht zu versenden? - gepostet von niGGo am Dienstag 27.03.2007



    Ähnliche Beiträge wie "Problem bei Übung"

    Bewerbung für Kara und den 25er Raid - Horax (Montag 15.10.2007)
    Klassenbedarf 25er Raid/gilde - Ukic (Sonntag 11.11.2007)
    2 Raidtag für Kara ? - ibar (Mittwoch 03.10.2007)
    Ml 9 Raid am Samstag den 07.08.2004 - Zitter (Donnerstag 05.08.2004)
    RAID ZEITEN !! - Hautrauf (Donnerstag 29.06.2006)
    zul raid - jaquline (Montag 12.11.2007)
    Änderungen Raid-Anmelde-System - Farad (Mittwoch 22.02.2006)
    4.*Boss* in Kara - Myx (Sonntag 02.09.2007)
    2 Kara Gruppen - lupidu (Donnerstag 10.05.2007)
    Raid-Anmeldung Bemerkungen - Limette (Mittwoch 06.06.2007)