Schulaufgabe



  • Hallo an alle,

    ich habe ein paar einfache programmierfragen zu c++ und vielleicht kann mir hier geholfen
    werden. Ich habe in der Schule zur Zeit mit C++ zu tun und habe nun zur nächste Woche
    dienstag (25.04.06) folgende Hausaufgabe auf ...

    Ich bin auch die linkliste für Neulinge durchgegangen und bin etwas ueberflutet
    worden von den ganzen tutorials und weiss net wo genau ich suchen muss ...
    erstmal hier die aufgaben

    1. Zeichenketten 1 (Wort)

    - Entwickeln Sie ein Programm das die Buchstaben eines Wortes alphabetisch sortiert.
    - Die Eingabe muss ein Wort sein z.B.: Wunderschön
    - Als Ausgabe auf dem Bildschirm wird das Wort mit den sortierten Buchstaben
    wiedergegeben.
    - Also z.b.: cdehnnorsuw
    - der sortieralgorythmus kann selbst ausgewählt werden

    2. Zeichenketten 2 (Satz)

    -Entwickeln sie ein Programm ... das im Prinzip genau das gleiche macht wie oben bloß mit
    den einzelnen Wörtern eines Satzes:
    - ALSO NICHT DER GANZE SATZ sondern lediglich die einzelnen Wörter deren Buchstaben
    sollen in alphabetischer Reihenfolge sortiert ausgegeben werden. Die Reihenfolge der Wörter
    soll erhalten bleiben!
    - ich denke die Prozedur von oben soll wahrscheinlich durch das Prinzip der
    Wiederverwendbarkeit oder der Polymorphie umgewandelt werden das es auch auf ganze
    Sätze zu trifft. (Kapselung --- da dass eigentliche Problem oben bereits geklärt ist)

    oder sehe ich das falsch ?

    3. Aufgabe

    von der will ich jetz noch gar net reden ... 😞

    Ich möchte das Forum ja nicht mit meinen unwichtigen Schulaufgaben belasten ,
    aber ich wusste mir momentan nicht anders zu helfen ... Ich hoffe das es überhaupt ein
    Feedback darauf gibt ! Wenn nicht
    wäre ich auf jedenfall dankbar wenn mir jemand einen anstoss geben könnte bzw. mir sagen
    könnte wo ich das wissen kompensiert bis zum 24.04.06 erlangen kann um die Aufgabe vllt
    selbst noch lösen zu können ...
    andernfalls bin ich aufgeschmissn da mein umfeld nicht sonderliche programmierkenntnisse
    besitzt , deshalb hab ich mich hier her gewandt

    Ich bedanke mich vorab schonmal für alle gutgemeinten Antworten!!!

    euer
    cplusplus:dau

    hier die aufgabe nochmal im wortlaut:

    Aufgabe 1: Zeichenketten I (Wort)

    Entwickeln Sie ein Programm, das die Buchstaben eines Wortes alphabethisch sortiert.
    • Die Eingabe muss ein Wort sein.
    z.B.
    wunderschoen
    • Als Ausgabe (auf dem Bildschirm) wird dasselbe Wort mit den sortierten Buchstaben ergeben.
    z.B. Für die Eingabe oben wäre die richtige Ausgabe:
    cdehnnorsuw

    Anregungen:
    Merken Sie, dass das Ende einer Zeichenkette in C durch das Symbol '\0' kennzeichnet wird.
    Die Sortierungsmethode können Sie frei auswählen.

    Aufgabe2: Zeichenketten II (Satz)

    Entwickeln Sie ein Programm, das:
    • Als Eingabe durch die Tastatur einen Satz eingelesen wird.
    z.B. den Satz:
    Freiheit ist immer die Freiheit des Andersdenkenden.
    Rosa Luxemburg
    • Als Ausgabe (auf dem Bildschirm) denselben Satz mit den einzelnen umgekehrten Wörtern
    ergibt.

    z.B.: Für die Eingabe oben wäre die richtige Ausgabe:
    tiehierF tsi remmi eid tieheirF sed nedneknedsrednA.
    *
    Anregungen:
    Um einen ganzen Satz mit Leerzeichen einzugeben können Sie die Funktion gets der <stdio.h>
    nutzen.
    Merken Sie, dass in C das Ende einer Zeichenkette durch das Symbol '\0' gekennzeichnet wird.
    In der Bibliothek <string.h> können Sie Funktionen finden, um die Zeichenketten zu verarbeiten.
    *

    und nochmal danke für alle gut gemeinten Antworten!!! 😉 😉

    ps
    ich entschuldige nochmal die einfachheit der fragen , normaler weise handle ich
    nach dem motto :

    http://members.aon.at/pcnet/bart_google.gif

    doch die dringlichkeit macht mich etwas nervös und suche daher hier kompetenten
    rat



  • Nun, zunächst sollst Du die Aufgaben in C lösen, so habe ich das zumindest verstanden ("stdio.h", "in C werden Strings mit einem \0 abgeschlossen", etc). Das hier ist aber das C++-Forum, daher sollte Dein Beitrag wohl verschoben werden.

    Zu Aufgabe 1: Schau Dir Sortieralgorithmen an, spontan fallen mir BubbleSort, ShakerSort, QuickSort, InsertionSort, SelectionSort ein. Wenn Du die verstanden hast (oder zumindest einen davon, ihr habt ja freie Auswahl), dann sollte es kein Problem dabei geben.

    Zu Aufgabe 2: Da es sich um C handelt fällt Polymorphie weg. Wenn Du die Aufgabenstellung richtig liest, dann bemerkst Du auch, dass die einzelnen Wörter des Satzes hier nicht sortiert, sondern getauscht werden sollen, so dass jedes Wort für sich genommen von hinten nach vorne gelesen das ursprüngliche Wort ergibt, die Reihenfolge der Wörter soll aber erhalten bleiben. Ich wüsste nicht, was Dir da das Sortierproblem aus Aufgabe 1 helfen sollte.



  • ja danke erstmal für deine antwort ... upps da hab i wohl was falsch gelesen ... stimmt ja also nur in umgekehrter reihenfolge ... dann hat das natuerlich wirklich nix mit der Wiederverwendbarkeit zu tun.

    Wollte ja halt bloß zum Ausdruck bringen das ich nicht ganz und gar ahnungslos bin ...

    Bubblesort ist mir aus meiner vorherigen Prog.sprache noch bekannt und ist wirklich kein Problem ... mein Problem ist eigentlich nur der Umgang mit c++ als objektorientierte Prog.spr. , und da wäre ich auch bei meinem Einwand.. Ich soll das Programm , die Aufgaben in C++ ausarbeiten und soweit ich weiss ist C doch die strukt. Variante und erst C++ die objektorientierte ? oder sehe ich das falsch .. also von daher bin ich doch net so ganz falsch hier ?

    meine detailierte frage ist nun auch wenn sie simpel ist und wahrscheinlich in jedem tut erklaert wird ... aber ich leider aufgrund des abistresses leider keine zeit habe eins durchzuarbeiten .... oder gar den nerv dafür 😞

    wie greif ich auf die einzelnen buchstaben eines wortes zu ...
    (in tp könnt ich die problematik sofort niederschreiben ... aber leider nicht in c++ und den ganzen objektorientierten sachverhalt mir auf die schnelle anzueignen faellt mir aucch reichlich schwer ...)

    ich weiss es sind alles triviale fragen nur leider bringt mich der zeitdruck dazu solche fragen zu stellen ... *sorry

    nur leider bin ich wie gesagt in c++ nicht so bewand in TP wäre dies alles kein problem ... nur leider hält mich der ganze compiler - linker einrichtung (umgebungsvariable usw ) so auf das ich net wirklich zur bearbeitung der eigentlichen programmier problematik komme ... oder ich sehe es kommen

    da zur zeit noch etliche weitere aufgaben anstehen und ich leider nicht sehr viel zeit in die bearbeitung dieser aufgabe stecken kann .... ich hoffe das sich so zumindest ein wenig verständniss für meine hemmungslose fragerei entwickelt ...

    vielen dank auch weiterhin fuer alle pos. gemeinten antworten

    mfg
    c++_dau



  • wie greif ich auf die einzelnen buchstaben eines wortes zu ...

    // Einfach die eingabe in nem Array speichern.
    char wort[];
    // und dann auf die einzelnen Elemente (buchstaben) zugreifen.
    grm = wort[0]; // für ersten buchstaben
    grm = wort[10]; // für neunten buchstaben 
    // usw.
    

    Also schnapp dir nen Tut und les über Arrays nach oder std::string (Zeichenketten) , die bieten dir ne größere Funktionalität, aber nen chararray sollte es auch tun.



  • Hallo

    effe_eichelt schrieb:

    grm = wort[10]; // für neunten buchstaben 
    // usw.
    

    wort[10] steht für den 11. Buchstaben und nicht für den 9.

    chrische



  • mantiz schrieb:

    Wenn Du die Aufgabenstellung richtig liest, dann bemerkst Du auch, dass die einzelnen Wörter des Satzes hier nicht sortiert, sondern getauscht werden sollen, so dass jedes Wort für sich genommen von hinten nach vorne gelesen das ursprüngliche Wort ergibt, die Reihenfolge der Wörter soll aber erhalten bleiben. Ich wüsste nicht, was Dir da das Sortierproblem aus Aufgabe 1 helfen sollte.

    Klar kann das helfen - die Buchstaben jedes Wortes sollen in sich sortiert werden, also mußt du nur den Satz durchgehen und auf jedes Wort deinen Algorithmus aus Aufgabe 1 anwenden (da nimmst du halt ' ' anstelle des '\0' als Endemarke für das Wort).

    PS: Wenn du zu faul bist, einen eigenen Sortier-Algorithmus zu schreiben, nimm doch qsort() (in C) bzw. sort() (in C++).



  • na das eben nicht in prinzip soll bei aufgabe 2:

    - 1. nix sortiert werden ...
    - nur die wörter in umgedrehter reihenfolge , aber die wortreihenfolge im satz soll erhalten bleiben ...

    also ein wort umdrehen sollte wohl darüber geschehen :

    void _reverse(const std::string& s)
    {
        for(std::string::size_type i = s.length(); i > 0;)
            std::cout << s[--i];
    }
    

    ich versteh bloß den sinn nicht ... ich weiss leider noch nicht mal wie man eine
    eingabe eines wortes tätigt .... grml geschweige denn wie ich auf die strings die befehle anwende ... habe leider von c++ nicht soviel ahnung ...

    auch wird hier soweit ich sehe kein array verwendet ...

    also in tp würde ich das folgender maßen denn machen , könnte mir das jemand in c++ syntax dann umwandeln ?
    die Umkehrung der Wörter meine ich jetze ...

    wort:array of string
    
    for i=1 bis j="abbruch benutzer"
            readln(wort[i])
    end.
    
    while i>=1 do
            writeln (wort[i])
            i:=i-1
    end.
    

    mfg
    c++_dau



  • Kennst du dich mit Strings auch in TP nicht aus? Ein String ist ein Array, darum ist deine deklaration nicht gültig.



  • Mal so eine Frage: Ihr habt das was ihr dafür benötigt doch sicher vorher durchgenommen?

    Ich weiß jetzt nicht genau, ob ihr nur C oder auch C++ benutzen dürft?

    In C:
    Einlesen: scanf(...)
    Ausgeben: printf(...)

    In C++:
    Einlesen: cin >> Var;
    Ausgeben: cout << "Blub\n";

    Wenn du dann endlich dein Wort in deiner Variable hast lässt du es einfach rückwarts ausgeben das erledigst du dann einfach mit einer Forschleife dir rückwärts läuft und am Ende anfängt.

    Auch wenn deine Situation jetzt vielleicht nicht so toll für dich ist: Was bringt es dir, wenn wir die Aufgabe für dich lösen und du dann nächste Woche mi der nächsten ankommst?

    Google wird dir helfen

    Gruß

    EDIT: Wenn du dann an einer Stelle ein Problem hast werden wir dir auch gerne hlefen, aber ganze Aufgaben zu lösen ist hier nicht so gern gesehen 😉



  • nimm als algorithmus den bubblesort, der ist zwar tierisch ineffizient, aber am einfachsten ;-).



  • wort[10] steht für den 11. Buchstaben und nicht für den 9.

    aber auch nur theortisch, weil das array nur 10 "eche" elemente besitzt



  • Und für den wievielten Buchstaben steht wort[10] in der Praxis (also mal völlig untheoretisch)? 🤡



  • für den 11.!!!!!!!!!!!!!!
    Ich glaube hahaha!! Hat das mit den Array noch net so ganz verstanden...
    ein array das mit 11 Elementen deklariert wurden hat einen index von 0-10
    vielleicht meinte er ja das mit dem theoretisch 😃


Anmelden zum Antworten