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

Listen in Racket

  • keine-ahnung
  • 7. November 2015 um 15:02
  • Unerledigt
  • keine-ahnung
    2
    keine-ahnung
    Mitglied
    Reaktionen
    1
    Punkte
    16
    Beiträge
    2
    • 7. November 2015 um 15:02
    • #1

    Moin allerseits,

    ich bin jetzt ersti und studiere u.a. Info.

    Bis jetzt komme ich auch wunderbar voran und es macht auch alles Spaß.

    Nun haben wir eine neue Hausübung bekommen, auf die ich nicht klar komme.
    Die erste Teilaufgabe ist folgende:

    Es ist ein Template vorgegeben, dort ist eine Einkaufsliste gegeben (die schon definiert ist).
    Das sieht so aus:
    (define some-products
    (list
    (make-product 'produktname preis 'marke) ;;preis ist hierbei eine zahl

    die Liste besteht aus mehreren Produkten logischerweise und die Aufgabe ist es, ein Programm zu entwickeln, dass bei Eingabe den geringsten Wert (Preis) ausspuckt.

    Ich habe mir bisher gedacht, es in folgende Schritte einzuteilen:
    -extrahieren der Preise (also der Nummern) aus der gegeben Liste und eine neue Liste zu erstellen nur mit den Nummern
    -die neue Liste einfach sortieren
    -aus der sortierten Liste den geringsten Wert ausspucken lassen.

    Außerdem gilt es während dieser Aufgabe 1 folgende Tests mit dem Programm zu bestehen:

    (check-expect (= (lowest-price empty) +inf.0) true) ;;Das ist mir klar, ich weiß nur nicht, wie es schreiben soll, damit ich darauf komme
    (check-expect (lowest-price (list (make-product 'P1 2 'S1) (make-product 'P1 5 'S2))) 2) ;;Das ist mir klar

    Mein Hauptproblem ist eigentlich schon direkt der erste Schritt.
    Wie extrahiere ich die Nummern aus der Liste?

    Weiter als
    (define (pricelist some-products)
    (cond
    [(empty? (...))

    Bin ich noch nicht :grinning_squinting_face:

  • keine-ahnung
    2
    keine-ahnung
    Mitglied
    Reaktionen
    1
    Punkte
    16
    Beiträge
    2
    • 7. November 2015 um 16:17
    • #2
    Zitat von keine-ahnung

    Moin allerseits,

    ich bin jetzt ersti und studiere u.a. Info.

    Bis jetzt komme ich auch wunderbar voran und es macht auch alles Spaß.

    Nun haben wir eine neue Hausübung bekommen, auf die ich nicht klar komme.
    Die erste Teilaufgabe ist folgende:

    Es ist ein Template vorgegeben, dort ist eine Einkaufsliste gegeben (die schon definiert ist).
    Das sieht so aus:
    (define some-products
    (list
    (make-product 'produktname preis 'marke) ;;preis ist hierbei eine zahl

    die Liste besteht aus mehreren Produkten logischerweise und die Aufgabe ist es, ein Programm zu entwickeln, dass bei Eingabe den geringsten Wert (Preis) ausspuckt.

    Ich habe mir bisher gedacht, es in folgende Schritte einzuteilen:
    -extrahieren der Preise (also der Nummern) aus der gegeben Liste und eine neue Liste zu erstellen nur mit den Nummern
    -die neue Liste einfach sortieren
    -aus der sortierten Liste den geringsten Wert ausspucken lassen.

    Außerdem gilt es während dieser Aufgabe 1 folgende Tests mit dem Programm zu bestehen:

    (check-expect (= (lowest-price empty) +inf.0) true) ;;Das ist mir klar, ich weiß nur nicht, wie es schreiben soll, damit ich darauf komme
    (check-expect (lowest-price (list (make-product 'P1 2 'S1) (make-product 'P1 5 'S2))) 2) ;;Das ist mir klar

    Mein Hauptproblem ist eigentlich schon direkt der erste Schritt.
    Wie extrahiere ich die Nummern aus der Liste?

    Weiter als
    (define (pricelist some-products)
    (cond
    [(empty? (...))

    Bin ich noch nicht :grinning_squinting_face:

    Alles anzeigen

    Achja, ich weiß, dass um den ersten Test zu bestehen, es so aussehen muss:
    (...) [(empty? (...) +inf.0)] (...) ;;Also, wenn empty? erfüllt ist, soll es eben +inf.0 ausspucken. Das Problem ist eben, dass ich nicht weiß, was ich hinter dem empty? schreiben soll

    Danke für jede Hilfe!

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 10:20
    • #3

    Einmal editiert, zuletzt von erpel1 (12. November 2015 um 11:00)

  • NeinDanke
    1
    NeinDanke
    Gast
    • 12. November 2015 um 14:32
    • #4
  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 14:33
    • #5

    Hi,
    hast du schon einen Ansatz?
    Ich weiss nicht wie ich vorgehen soll.
    Ich glaube die Produktliste (some-products) soll übergeben werden und dann der niedrigste Preis ausgegeben werden.
    Da fängt das erste Problem schon an: wie kann ich eine Produktliste übergeben?
    Um die Preise aus der Produktliste (some-products) müsste doch eigentlich der "Befehl" product-price geltet. Damit sollte man doch zugriff auf die Preise haben bei
    einer Struktur um die Preise zu extrahieren.

    Da die Struktur product (define-struct (name price supermarket) aus den feldern ´name price `supermarket (bei mir) besteht,
    kann man doch folgendes benutzen:

    product? liefert truefür einen Wert zurück, der durch make-product erzeugt wurde
    z.B. (bei meiner Aufgabenstellung) product?'chocolate 4.99 'always-fresh ->true

    product-price liefert für das Feld einen Selektor, der eine Struktur als Argument bekommt und den Wert des Feldes (hier den Preis) extrahiert
    z.B. (product-price ('chocolate 4.99 'always-fresh)) -> 4.99

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 14:49
    • #6

    Hi,
    habe leider bisher keine Lösung gefunden. Habe sonst auch keinen, den ich fragen könnte. Kenne an der Uni auch keinen.
    Zerbreche mir schon seit Tagen den kopf darüber. Falls ich was finden sollte werde ich selbstverständlich posten.

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 14:54
    • #7

    Bist du eigentlich online für die nächste Zeit?

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 15:04
    • #8

    Wie sieht´s den damit aus?

    (define (lowest-price a-product-price )
    (cond
    [(empty? a-product-price) +inf.0]))
    [else
    ......(first a-produc-price) ...
    ......(rest a-product-price) ...

    weiss noch nicht wie die ... auszufüllen sind. Hilft dir das vielleicht weiter? Ist das überhaupt richtig?
    Was denkst du?

  • NeinDanke
    1
    NeinDanke
    Gast
    • 12. November 2015 um 15:07
    • #9

    Ich bin noch ne Weile da. Mein Ansatz sieht so aus:

    (define (lowest-price lop)
    (cond
    [(empty? lop) +inf.0]
    [else (< (product-price (first lop))
    (product-price (rest lop)))]
    )
    )

    Wobei er mir dann einen Fehler auswirft:

    product-price: expects a product, given (list (make-product 'P1 5 'S2))

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 15:18
    • #10

    Für was steht bzw. welche Liste ist denn lop?
    Das ist doch eine leere Liste. oder?

  • NeinDanke
    1
    NeinDanke
    Gast
    • 12. November 2015 um 15:20
    • #11

    lop steht für listofproducts und bezieht sich einfach auf die angegebene liste die bearbeitet werden soll bzw von der wir den niedrigsten preis wollen

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 15:33
    • #12

    Wann ist den deine Abgabe?
    An welcher uni bist du?

  • NeinDanke
    1
    NeinDanke
    Gast
    • 12. November 2015 um 15:37
    • #13

    Auch morgen. TU Darmstadt.

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 15:41
    • #14

    Hahaha
    bin auch an der TUD.

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 15:57
    • #15

    Hast du schon eine andere Aufgabe bearbeitet bzw. gelöst?

  • NeinDanke
    1
    NeinDanke
    Gast
    • 12. November 2015 um 16:01
    • #16

    Nein, sonst hab ich noch nichts gemacht. Ich muss aber auch noch AFE heute fertig machen...

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 16:07
    • #17

    AFE? Bin kein Informatiker.

  • NeinDanke
    1
    NeinDanke
    Gast
    • 12. November 2015 um 16:12
    • #18

    Automaten, Formale Sprachen und Entscheidbarkeit

  • erpel1
    4
    erpel1
    Mitglied
    Punkte
    130
    Beiträge
    26
    • 12. November 2015 um 21:26
    • #19

    Hi,
    schon irgendwie weitergekommen? ich nicht.
    Viel erfolg wenigstens bei AFE!

  • NeinDanke
    1
    NeinDanke
    Gast
    • 12. November 2015 um 21:42
    • #20

    Hey, bau eine Hilfsoperation die die Liste nach dem Preis sortiert, dann sollten 5.1 und .2 ganz einfach sein.

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