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
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

"cesar shift" in c

  • Havoc
  • 14. Oktober 2004 um 11:47
  • Unerledigt
  • Havoc
    5
    Havoc
    Mitglied
    Punkte
    215
    Beiträge
    29
    • 14. Oktober 2004 um 11:47
    • #1

    sitz grad bei meinem ersten sysprog bsp in c und hab als bsp 1a den tollen
    "cesar shift" bekommen.

    soll mit zwie tabellen, jeweils upper- und lowercase alphabet arbeiten und mit einer
    function() bsearch den jeweiligen character in den beiden tabellen suchen und dann verschlüsseln.

    soll ich die beiden tabellen als character arrays anlegen oder gibt es dafür noch andere bessere datenstrukturen und vielleicht habt ihr auch ahnung ob es irgendwelche hilfreichen
    bibliotheks funktionen für das problem gibt.

    wer net wenn mir wer auf die sprünge helfen könnte!!!
    schon mal danke!!! :distur:

    :wave:

  • Zentor
    16
    Zentor
    Mitglied
    Reaktionen
    5
    Punkte
    2.710
    Beiträge
    506
    • 14. Oktober 2004 um 15:51
    • #2

    Das kommt auf die Angabe an. Wenn die Angabe es nicht verbietet würde ich auch einfach ein char Array verwenden. Normaller Weise reicht es sich auf die kontinuität der ASCII Zeichen 'a'->'z' und 'A'->'Z' zu verlassen, aber soweit ich mich an das Beispiel erinnern kann fanden die bei Sysprog den Fall eines anderen Character-Sets für zu gefährlich. Ob auf solchen PCs ein Prog encoded in ASCII auch zu kompilieren/Lauffähig ist, bleibt da eine andere Frage.
    mfg Oliver

  • Havoc
    5
    Havoc
    Mitglied
    Punkte
    215
    Beiträge
    29
    • 19. Oktober 2004 um 13:26
    • #3
    Zitat von Zentor

    Das kommt auf die Angabe an. Wenn die Angabe es nicht verbietet würde ich auch einfach ein char Array verwenden. Normaller Weise reicht es sich auf die kontinuität der ASCII Zeichen 'a'->'z' und 'A'->'Z' zu verlassen, aber soweit ich mich an das Beispiel erinnern kann fanden die bei Sysprog den Fall eines anderen Character-Sets für zu gefährlich. Ob auf solchen PCs ein Prog encoded in ASCII auch zu kompilieren/Lauffähig ist, bleibt da eine andere Frage.
    mfg Oliver

    leider steht explizit in der angabe dass man nicht dass ASCII - set verwenden darf!! es liegt ein zeichensatz vor def lücken beinhaltet und es muss auch nicht gegeben sein dass a < b < ....< z usw vorgegeben ist!!

    bin einstweilen so weit dass ich mal 2 arrays mit jeweils groß und kleinbuchstaben deklariere, die ich als suchtabellen verwenden werede.
    argumentbehandlung erfolgt ziemlich genauso wie im buch beschrieben!!

    problem ist jetzt noch immer diese stdlib.h methode bsearch() hat eine irsinnig lange parameterliste und weiß nich nicht genau wie dich das ganze jetzt jwirklich durchführen werde!

    :wave:

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 19. Oktober 2004 um 15:46
    • #4

    bsearch ist für sowas nicht wirklich nötig. Nimm lieber strchr. Oder sagt die Angabe explizit, daß du bsearch nehmen sollst?

    Edit: Große Teile meines Posts waren Schwachsinn.
    Edit 2: Hmm, doch nicht. Wenn man nicht von 'a' < ... < 'z' ausgehen darf, kann man keine effiziente Vergleichsfunktion für chars schreiben. D.h. bsearch wäre zwar log n, durch die lineare Vergleichsfunktion wird es aber zu n log n. Einfache lineare Suche mit strchar wäre nur n. Das Requirement, das Programm mit der tollen voll effizienten Funktion bsearch zu schreiben, macht es also weniger effizient als eine naive, übersichtliche Implementierung :hewa: Und dann gibt es noch Leute, die es nicht verstehen, daß ich die Sysprog-Leute hasse...

    Falls du doch bsearch verwenden willst/mußt, hilft es, sich die Sache so aufgeschrieben zu denken:

    Code
    /* definiere vergleichsfunktion als den Typ: Pointer auf Funktion,
       die zwei Pointer auf const void nimmt und int zurückgibt */
    typedef int (*vergleichsfunktion)(const void *, const void *);
    
    
    /* Argumente: gesuchtes Objekt, Anfang des Arrays,
       Anzahl der Elemente, Größe eines Elements, Vergleichsfunktion */
    void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, vergleichsfunktion f);


    Dann mußt du eben eine Funktion int vergleich(const void *, const void *) implementieren und beim Aufruf an bsearch übergeben.

    *plantsch*

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung