Begriffe in einem dynamischen Array, Vokale zählen



  • Moin

    Ich habn Problem, ich komm einfach auf keine gute Idee die
    Aufgabe zu lösen, habt ihr vorschläge?

    Aufgaben:
    https://docs.google.com/Doc?id=dffgsmmj_40dzqvgtgr

    Wär euch sehr Dankbar für unterstützung! 😃



  • Wie das array deklariert wird, steht in der aufgabenstellung
    Einlesen lässt sich über for-Schleife und std::cin
    für die darstellung der strings benutze new std::string oder erstelle dynamisch über new und delete char arrays, auf die die zeiger zeigen.
    zufällig ausgeben geht mit rand() % arraygröße und std::cout
    Zum Vokale zählen gehst du das array über eine For schleife durch, erhöhst einen counter, wenn die entprechende if bedinung erfüllt ist ( if buchstabe == vokal, wobei du für vokal den entprechenden ascii zahlenwert verwenden kannst)

    Das sollte an informationen reichen



  • ALso zu Aufgabe 1 hab ich mir das so gedacht,
    funktioniert nur leider net so olle 😞

    # include <iostream.h> // fuer cin und cout
    # include <string.h> // fuer strlen() und strcpy()
    # include <time.h> // fuer time()
    # include <stdlib.h> // fuer srand() und rand()

    //=======================================================

    void main()
    {
    char temp[30]; // temporaere Bedienereingabe
    int anzahl = 0; // Zaehler fuer die eingegebenen Begriffe

    cout<<"Bitte maximal 10 Begriffe eingeben."<<endl;
    cout<<"Abbruch durch Eingabe von \"Return\": "<<endl;
    do
    {
    cout<<anzahl+1<<". Begriff: "; // Ausgabe

    dyn_array[anzahl]=new char [strlen(temp)+1]; //dyn. Speicher erstellen
    strcpy(dyn_array[anzahl],temp); //Begriff in dyn. Speicher
    //kopieren

    } while ( strlen(temp) && anzahl<10 ); // Schleife durchlaufen, solange
    // etwas eingegeben wurde und noch
    // keine 10 Begriffe vorhanden sind

    if (anzahl) // Falls mindestens ein Begriff eingegeben wurde
    {
    cout<<endl<<"Hier jetzt ein zufaellig ausgewaehlter Begriff: ";
    cout<<dyn_array[rand()%anzahl]<<endl; // Einen der Begriffe zufaellig bestimmen
    }
    else // Falls keine Begriffe eingegeben wurden
    cout<<endl<<"Es wurden keine Begriffe eingegeben."<<endl;

    }

    AUFGABE2:

    # include <iostream.h> // fuer cin und cout
    # include <string.h>

    // =========================================================

    int anzahl(char *, char); // Funktion zum Zählen eines Buchstabens
    // in einem String
    // uebergeben wird das kleingeschriebene Zeichen
    // gesucht wird automatisch auch nach Großbuchstaben

    // =========================================================

    void main()
    {
    char satz[100];
    int i; // Zaehlvariable fuer Schleifen
    int max_anzahl; // Anzahl des am haeufigsten vorkommenen Vokals

    int anzahl_vokale[5]; // Array fuer die Anzahl der Vokale
    char vokale[]={"aeiou"};// Array der Vokale

    cout<<"Bitte einen Satz eingeben:"<<endl;
    cin.getline(satz,100); // Einen Satz einlesen

    for (i=0; i<5 ; i++) // Aufruf der Zaehlfunktion mit allen Vokalen
    anzahl_vokale[i] = anzahl(satz,vokale[i]);

    cout<<endl<<"In dem Satz befinden sich ";

    for (i=0; i<4 ; i++) // Ausgabe der Haeufigkeiten
    { cout<<anzahl_vokale[i]<<" "<<vokale[i];
    if (i<3)

    }

    max_anzahl = anzahl_vokale[0];
    max_buchstabe = vokale[0];

    for (i=1; i<5;i++)
    if (anzahl_vokale[i]>max_anzahl)
    {
    max_anzahl = anzahl_vokale[i];
    max_buchstabe = vokale[i];
    }

    cout<<endl<<"Kein Vokal kam haeufiger als der Vokal "<<max_buchstabe<<" vor."<<endl;

    }

    // =========================================================

    int anzahl(char *satz, char gesuchtes_zeichen) // Funktion zum Zählen eines Buchstabens
    // in einem Satz

    {
    int x = 0; // Zaehler auf Null setzen

    for (int i=0; i<l ; i++) // Satz Zeichen fuer Zeichen durchlaufen
    if (satz[i] == gesuchtes_zeichen || satz[i] ==gesuchtes_zeichen-32 )
    }



  • neal5 schrieb:

    ALso zu Aufgabe 1 hab ich mir das so gedacht,
    funktioniert nur leider net so olle 😞

    Hallo neal5,

    es wäre nett, wenn Du C++-Code mit den Tags [ cpp ] [ /cpp ] umschließt, damit der Code lesbarer wird.

    Außerdem sage doch bitte, was "funktioniert net so olle" bedeutet. Was gefällt Dir nicht, was funktioniert nicht und welche Fehlermeldungen gibt es?



  • ein paar allgemeine tipps:
    benutze std::vector und std::string. Dann fällt der Code um einiges kürzer, lesbarer und sicherer aus. Ich denke, hier liegt auch der Fehler, da niemand die ganzen C-Array funktionen überblicken kann und da schnell mal ein Fehler zwischen rutscht.
    benutze die c++ header (also die versionen ohne .h).
    es heißt int main() und nicht void main()!



  • Wenn er vector etc benutzt, dann ist das bestimmt schönerer, besserer und sicherer Code.
    Nur die Aufgabe gibt da was anderes vor.


Anmelden zum Antworten