Hilfe zur Klausuraufgabe Klausur WS 2016/17 (Mrz 2017)

Dieses Thema im Forum "32561 Entwurf und Implem. von Informationssystemen" wurde erstellt von Tristan, 21 August 2017.

  1. Tristan

    Tristan

    Hochschulabschluss:
    Bachelor of Science
    Studiengang:
    M.Sc. Wirtschaftsinformatik
    Hier mein Lösungsvorschlag:

    Aufgabe 1


    R, ?, F, F, R, R, F, F, ?, F

    Aufgabe 2
    [​IMG]
    Der Bildupload funktioniert nicht so richtig. Link zum Bild:
    https://picload.org/view/rwcooagw/17a2a.png.html

    Symmetrische Ordnung: (hier mache ich sehr gerne Fehler -.-)

    C B Q E P F D A H K J I G M L R O N

    b) KE3 S.24ff. Es handelt sich um den INSERTIONSORT (Sortieren durch Einfügen)

    Vorgehen: Es gibt zwei „Listen“, eine sortierte und eine unsortierte.
    Pro Durchgang wird von der unsortierte Liste ein Element ausgewählt und in die sortierte Liste( natürlich an der richtigen Stelle) eingefügt.

    Code schreiben: siehe. KE3 S.26

    c)KE3 S.72 symmetrische Ordnung ist für die Auflösung eines binären Suchbaums geeignet. Die Datenobjekte werden in sortierter Reihenfolge gespeichert. Zu beachten ist, dass keine zwei gleichen Suchschlüssel existieren dürfen.

    d) KE2 S.49

    Vorteil von verketteter Speicherung:
    +Listenelemente lassen sich auf einfache Weise hinzufügen und entfernen. Es muss nicht umgespeichert werden.
    +Bei Implementierung mit Zeigerkonzept, wenig Aufwand.
    +spezielle Formen für spezielle Anwendungsbereiche (Ring-, Ankerkettung)

    Nachteile
    -Keine Selektoren, daher kein gezielter Zugriff auf Datenobjekte
    -zusätzlicher Speicherplatzbedarf für Zeigerverwaltung

    Anwendungsbereich:
    Verkettete Speicherung: hohe Datenbewegungsrate (häufiges hinzufügen/löschen)
    Sequentielle Speicherung: geringe Datenbewegungsrate und schneller Zugriff auf Objekte benötigt

    Aufgabe 3

    a) iterativ
    Code:
    double ermittle_mw(double *v, int l){
        l++;
        double x=0;
        int i;
        for(i=0; i<l; i++){
            x = x + v[i];
            printf("\n x: %f",x);
    
            printf("\n v[i]: %f",v[i]);
        }
    return (x/i);
    }
    
    b) keine Ahnung wie das rekursiv funktionieren soll.
    Kann es sein, dass es hierzu eine Beispieldatei gibt? Hab da was im Hinterkopf, aber leider nichts gefunden.

    c) do-while vs while

    do-while: keine Eintrittsbedingung, d.h. wird mindestens einmal ausgeführt.
    while: mit Eintrittsbedingung, kann keinmal ausgeführt werden.

    2ter Unterschied???

    d) switch
    Code:
    switch (operator)
    {
    case '+': printf("\n %f + %f = %f",
    operand1, operand2, operand1 + operand2); break;
    case '-': printf("\n %f - %f = %f",
    operand1, operand2, operand1 - operand2); break;
    case '*': printf("\n %f * %f = %f",
    operand1, operand2, operand1 * operand2); break;
    default: printf("\nUnbekannte Operation!"); break;
    }
    
    e) Getränkeautomat
    //c1)
    Code:
    int pruefeGeldstueck(float muenze){
    //    Typumwandlung
        int x;
        float temp=0.0;
        temp = 100 * muenze;
        x = (int) (temp);
        switch(x){
            case 5:   printf("\nGeldstueck angenommen!"); return 1;
            case 10:  printf("\nGeldstueck angenommen!"); return 1;
            case 20:  printf("\nGeldstueck angenommen!"); return 1;
            case 50:  printf("\nGeldstueck angenommen!"); return 1;
            case 100: printf("\nGeldstueck angenommen!"); return 1;
            case 200: printf("\nGeldstueck angenommen!"); return 1;
            default:    printf("\nGeldstueck ungueltig!"); return 0;
        }
    }
    
    c2)
    Code:
    int auswahlGetraenkeSorte(){
        int x;
        do{
            printf("\nGetraenk auswaehlen!");
            printf("\n(1) 0.50 Euro Wasser");
            printf("\n(2) 1.20 Euro Limonade");
            printf("\n(3) 2.00 Euro Bier\n");
            scanf("%d",&x);
            printf("\nIhre Auswahl: %d",x);
        }
        while (!(x>0 && x<4));
        return x;
    }
    
    c3
    Code:
    float ermittlePreis(int sorte){
        printf("\nSie haben die Sorte %d ausgewaehlt", sorte);
        float preis;
        switch(sorte)
        {
            case 1: printf("\nWasser kostet 0.50 Euro"); preis=0.5; break;
            case 2: printf("\nLimonade kostet 1.20 Euro"); preis= 1.2; break;
            case 3: printf("\nBier kostet 2.00 Euro"); preis= 2.0; break;
            default: printf("\nfalsche Eingabe -> Abbruch"); preis = 100.00; break;
        }
        return preis;
    }
    
    c4
    Code:
    float bezahlen(float zuZahlen){
        float temp;
        float eingeworfen = 0;
        float rest = zuZahlen;
    
        while(zuZahlen>0){
            printf("\nBitte werfen sie ein gueltiges Geldstueck ein");
            scanf("%f", &temp);
            if (pruefeGeldstueck(temp)){
                zuZahlen = zuZahlen - temp;
                eingeworfen = eingeworfen + temp;
                printf("\nRestbetrag: %.2f",zuZahlen);
                printf("\nbereits eingeworfen: %.2f",eingeworfen);
            }else{
                printf("\nungueltiges Geldstueck!");
            }
        }
        if(zuZahlen<0){
           printf("\nRueckgeld: %.2f",zuZahlen);
        }
    }
    
     
  2. mein Vorschlag

    1c)
    R
    R
    F
    F
    R
    R
    F
    R
    F
    F

    2)
    CQPFEDBHKJIGMRONLA


    3a

    double ermittle_mw_rk(double *v, int pos)
    {
    double n = pos+1;

    if (pos >= 0)
    return (1 / n)*(ermittle_mw_rk(v, pos - 1)*(pos) + *(v+pos));
    else
    return 0;


    }

    c) sind ja die beiden punkte ^^

    e)
    hat bei dir keine Rückgabewerte
    ausgabe erfolgt in der main()
    Abbruchmöglichkeit durch 0 fehlt
     
  3. Junipa

    Junipa

    Hochschulabschluss:
    Bachelor of Science
    Studiengang:
    M.Sc. Wirtschaftsinformatik
    Zu Aufgabe 2a) ist das Bild nicht länger verfügbar, daher hänge ich meinen Vorschlag rein.
    Habe zur Übung noch in prä- und postordnung traversiert. Würde mich freuen wenn jemand kommentiert ob meine Lösungen stimmen, man vertut sich da so schnell...

    Zu Aufgabe 2c)
    Programmieren in C Kurseinheit 3 S. 97
     

    Anhänge:

    Zuletzt bearbeitet: 30 August 2019

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deinem Erleben anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden