1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Mitglieder
  3. AlexW

Beiträge von AlexW

  • qsort problem

    • AlexW
    • 18. April 2009 um 17:57

    hat sich erledigt anscheinend ist lsearch ident mit lfind

  • qsort problem

    • AlexW
    • 18. April 2009 um 17:52

    lfind und lsearch verwechselt?
    das beispielprogramm zu lsearch kapier ich nicht wirklich....

  • qsort problem

    • AlexW
    • 18. April 2009 um 17:00

    schaut bei lsearch die compare funktion anders aus als bei bsearch weil beim funktionsaufruf gibt es anscheinend keinen Unterschied

    Zitat

    lsearch() soll von der Funktion und vom Aufruf her identisch sein mit bsearch(), außer daß das Feld für bsearch() sortiert sein muß. Für lsearch() ist dies nicht nötig.

    trotzdem geht die lsearch funktion (Code2) nicht

    C
    [COLOR=#000080]#include <stdio.h>
    #include <stdlib.h>
    
    
    int values[] = { 10, 20, 25, 40, 90, 100 };
    
    
    int compare (const void * a, const void * b)
    {
      return ( *(int*)a - *(int*)b );
    }
    
    
    main ()
    {
      int * pItem;
      int key = 40;
      pItem = (int*) bsearch (&key, values, 6, sizeof (int), compare);
      if (pItem!=NULL)
        printf ("%d is in the array",*pItem);
      else
        printf ("%d is not in the array",key);
      return 0;
    }
    [/COLOR]
    Alles anzeigen
    C
    [COLOR=#000080]#include <stdio.h>
    #include <stdlib.h>
    
    
    int values[] = { 10, 40, 100, 20, 90, 25};
    
    
    int compare (const void * a, const void * b)
    {
      return ( *(int*)a - *(int*)b );
    }
    
    
    main ()
    {
      int * pItem;
      int key = 40;
      pItem = (int*) lsearch (&key, values, 6, sizeof (int), compare);
      if (pItem!=NULL)
        printf ("%d is in the array",*pItem);
      else
        printf ("%d is not in the array",key);
      return 0;
    }
    [/COLOR]
    Alles anzeigen

    ich frage mich nun wieso?

  • qsort problem

    • AlexW
    • 18. April 2009 um 16:03

    einfach und auf den punkt danke
    brauch ich nämlich bei lsearch auch nochmal :frowning_face:

  • qsort problem

    • AlexW
    • 18. April 2009 um 15:49

    woow so simple kanns gehen
    danke sehr
    bis auf size_t (muss ich mal eben googlen) hätt ich das wohl auch können sollen :hewa:

  • qsort problem

    • AlexW
    • 18. April 2009 um 14:51

    nachdem ich die Angabe nun ja halbwegs verstanden habe
    stehen in keinem File Zahlen und Buchstaben gemischt nur entweder oder (z.B. die Datei besteht rein aus Fließkommazalen)

    wie können mir die cctype funktionen helfen eine Datei in ein Array zu schreiben?

  • qsort problem

    • AlexW
    • 18. April 2009 um 14:25

    nunmal abgesehen vom qsort

    Wie kann ich nun eigentlich eine Datei in ein Array schreiben?

    FILE* und array sind ja nicht kompatibel

    Code
    FILE* datei;
    datei = fopen("test.txt", "r");
    while ((getc(datei)) != EOF)
    {
    array[i] = datei;
    i++;
    }

    funktioniert demnach nicht. Wie kann ich das anders lösen?

  • qsort problem

    • AlexW
    • 18. April 2009 um 13:53

    stimmt auch wida
    aba wir arbeiten zum glück noch nicht sehr ressourcen bewusst :grinning_squinting_face:

  • qsort problem

    • AlexW
    • 18. April 2009 um 13:25

    ja so schon aber dann brauch ich für jeden Datentyp ne eigene compare Funktion und ich hab jetzt eine Funktion für alle Datentypen

  • qsort problem

    • AlexW
    • 18. April 2009 um 12:53

    deine version is schon gut so, aber für float und double nicht verwendbar
    und die argc argv methode funktioniert für wörter, buchstaben, fließkommas, integer,....

  • qsort problem

    • AlexW
    • 18. April 2009 um 11:59

    hab jetzt wieder auf meinen erste versuch mit argc argv zurückgegriffen und werd das über 2d array in ein qsort für Dateien ummodeln

  • qsort problem

    • AlexW
    • 18. April 2009 um 09:07

    ja soweit is mir schon klar
    aber wenn ich mit dem qsort jetztdurch ne datei fege (Text) dann beachtet er doch nicht den ascii oda?

  • qsort problem

    • AlexW
    • 18. April 2009 um 08:38
    Zitat von Adok

    http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/

    Mach's so wie in dem Beispielprogramm beschrieben. Nicht als String nehmen, sondern als Zeichen.

    da isses doch nur mit integers
    das funktioniert doch mit anderen Zeichen nicht oda versteh ich da grad was nicht

  • qsort problem

    • AlexW
    • 17. April 2009 um 21:58

    nja danke auf jeden Fall mal
    jetzt hab ich eh das Wochenende Zeit und werd mir das alles mal in Ruhe anschauen mal schauen was dabei rauskommt

  • qsort problem

    • AlexW
    • 17. April 2009 um 21:48
    Zitat von damike

    Du musst den Wert in der Datei ja irgendwie interpretieren. Also zu sagen was da jetzt für ein Typ steht geht ohne weiteres nicht.
    Array kannst verwenden oder wenns online gehen muss z.B. 2-4 Baum (also wenn du es bearbeiten können musst o.ä.)

    wenn ich jetzt ne beliebige Datei hätte (einfaches bsp)

    Zitat

    defacb34tz1

    könnte ich da einfach jedes Zeichen als "string" verwenden und sortieren wies mit argc, argv schon funktioniert hat?

  • qsort problem

    • AlexW
    • 17. April 2009 um 21:46
    Zitat von skinner33

    Du könntest auch einfach mal in den passenden Thread im Sysprog Forum schauen

    ok hätt ich doch besser genauer geschaut
    danke werd mir das mal zu Gemüte führen

  • qsort problem

    • AlexW
    • 17. April 2009 um 21:36

    eine beliebige (binär)Datei sortieren entweder auf- oder absteigend
    wobei ich mir nicht im klaren bin wie man Sonderzeichen (,;?=) sortieren kann (außer vl nach ASCII)

  • qsort problem

    • AlexW
    • 17. April 2009 um 21:23

    also was ich bisher habe

    C
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    
    #define FALSE 0
    #define TRUE  1
    
    
    int main (int argc, char *argv[])
    {
    
    
    FILE* f;
    char c;
    
    
    if(argc < 2) 
       {
        fprintf(stderr, "Fehlerhafe Eingabe");
             return EXIT_FAILURE;
    
       }
    
       else if(getopt(argv[1],"h") == TRUE ) 
       {
          help();
          exit(EXIT_SUCCESS);
       }
    
    
       else if(getopt(argv[1],"t") == TRUE ) 
       {
    
        f = fopen(argv[2], "r");
    
        //qsort(f, ANZ, sizeof(char *), compare);    
    
        if (f == NULL)
            fprintf(stderr, "Datei %s konnte nicht geoeffnet werden", argv[2]);
        else
        {
        while((c=getc(f)) != EOF)
        putc(c, stdout);    
        }
    
          exit(EXIT_SUCCESS);
       }
    
    
    return 0;    
    
    
    }
    Alles anzeigen
  • qsort problem

    • AlexW
    • 17. April 2009 um 21:20

    danke vielmals :thumb:

    und wie kann ich das ganze jetzt auf eine Datei gesehen anwenden?
    zu mal ich da ja nicht mit %c und %d ausgebn kann sondern die ganze Datei betrachten muss, gibt es da ne Möglichkeit?

    oder kann ich eben den Dateiinhalt in ein Array speichern dann müsste ich aber irgendwie zwischen den Dateitypen unterscheiden

  • qsort problem

    • AlexW
    • 17. April 2009 um 21:10

    Danke für die schnelle Antwort

    wie kann ich denn Segmention Fault beim 2. Fall vermeiden?
    bzw

    Code
    array[0] = "a"; würde auch nicht funktionieren oder?


    wie krieg ich das mit EOS gebacken?

    mfg Alex

Rechtliches

Impressum

Datenschutzerklärung