Brauche Hilfe bei Dezimalstellen ausgabe!



  • @mmisk26 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    aber wie funktioniert das mit nachkommastellen ?

    Laut Aufgabe sollst du einen int einlesen. Also eine ganze Zahl. ints haben per Definition keine Nachkommastellen.

    Wenn du eine Zahl mit Nachkommastellen hast, müsstest du einen float oder double einlesen. Diese sind jedoch gänzlich ungeeignet, um damit zu ermitteln, wie viele Nachkommastellen es gibt. Also bliebe nur, einen std::string einzulesen, um darin manuell die Nachkommastellen (im 10er-System) zu zählen. Oder aber du liest int, ein char (nämlich den . bzw. das ,) und dann nochmal einen int ein, sodass du ein int für das "vorm Komma" und ein int für das hinter dem Komma hast.



  • @wob Okay, im Grunde finde ich das in Ordnung. Aber gibt es heute noch Lehrpläne für eine Oberstufe? Mir kommt es vor, das nur noch Mittelschule vermittelt wird. Und selbst dies erscheint als äußert komplex für aktuelle Bildungsverantwortliche.



  • @lemon03 Hm... bei uns damals fing Informatik erst mit Klasse 11 an (Lehrer hat versucht, Prolog zu unterrichten, weil bei Turbo Pascal ja einige Schüler schon Vorsprung hätten - hatte aber selbst keine Ahnung davon). In 12+13 hatten wir dann neben Prolog noch Java, wo ein anderer Lehrer (der Informatik-Leiter, der sich mit Prolog auskannte und wohl den anderen Lehrer gebeten hatte, auch Prolog zu unterrichten) versucht hat, neben Programmierung noch ein ganz kleines bisschen theoretische Informatik zu vermitteln (also Sortieralgorithmen, Komplexitätsklassen, O-Schreibweise) - nur konnte der leider nicht gut erklären (ich fand schon, aber viele haben es nicht verstanden). Gut, ist jetzt auch schon knapp 2 Dekaden her. Aber wenn ich dann folgendes lese, bekomme ich Angst: https://schule-mathematik.blogspot.com/2017/08/realitatsnahe-aufgaben-iv.html



  • Mhm, ich bin doch schon etwas älter, wie mir scheint. Es gab zwar einen Informatik-Kurs, aber deren Übungen beschränkte sich auf die Ausgabe auf einen Nadel-Drucker. Man musste das ja nicht mitmachen, aber zu verstehen, das ein Integer ein Integer ist, gehört heute 100 Jahre später mE zu den Grundlagen, wie das Hauptwörter groß geschrieben werden.

    edit: Und das lernt man in der Grundschule, deshalb die Frage, warum gesiezt wird.



  • Auch wenn ich mich jetzt um Kopf und Kragen schreibe, es ist eigentlich Grundschulmathematik. Ganzzahlen und Zahlen mit Komma.



  • @mmisk26 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    @manni66
    naja wenn man da a einliest
    z.B cin >> 43.6542

    Was steht dann in a?



  • Gib einfach aus "nein" und sag, die Zahl hat hinten und vorn unendlich viele Nullen. Vlt. bekommt ihr dann beim nächsten Mal eine genauere Aufgabenstellung. Wenn die Lösung das mit dem 100 Vergleich sein soll, warum schreibt man das nicht in die Aufgabe, man soll hier Informatik lernen und nicht Matherätsel machen. Oder: "wandle die Zahl in einen String mit Dezimaldarstellung und zähle wieviel Zeichen davon Ziffern sind."


  • Mod

    @tggc sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    Gib einfach aus "nein" und sag, die Zahl hat hinten und vorn unendlich viele Nullen. Vlt. bekommt ihr dann beim nächsten Mal eine genauere Aufgabenstellung. Wenn die Lösung das mit dem 100 Vergleich sein soll, warum schreibt man das nicht in die Aufgabe, man soll hier Informatik lernen und nicht Matherätsel machen. Oder: "wandle die Zahl in einen String mit Dezimaldarstellung und zähle wieviel Zeichen davon Ziffern sind."

    Vermutlich sieht das der Fragesteller nicht als uneindeutig oder Rätsel, sondern als einfache Programmierfrage an einem absichtlich trivialem Beispiel. Ich habe jedenfalls sofort beim ersten Lesen verstanden, was gemeint ist, und das eigentliche Rätsel war mir, wie man so lange über andere Interpretationen diskutieren kann. Vermutlich ist im Unterricht nicht ausreichend vermittelt worden, was die tiefere Bedeutung von Datentypen ist. Die Aufgabe ist vielleicht von der Wortwahl her etwas ungünstig, aber es ist eindeutig nicht als Rätsel gedacht, denn "weniger als drei Deziamalstellen" ist wirklich 3. Klasse. Da geht es nicht darum, dass das irgendwie schwierig ist, sondern darum, die Textaufgabe in Programmlogik zu konvertieren.

    Auf jeden Fall wäre der Zweck jeder Programmieraufgabe dahin, wenn man genau vorgeben würde, dass die Lösung durch "Vergleich mit 100" oder "Zeichenzählen in der Stringdarstellung" erfolgen soll. Zu den Kernkompetenzen eines Programmierers gehört, über solche Probleme nachzudenken und die Vor- und Nachteile verschiedener Lösungen abzuwägen (hier zum Beispiel, warum das Zeichenzählen nichts taugt, wenn man ein bisschen mehr darüber nachdenkt).



  • Also eine dezimale Ziffer kenne ich erstmal gar nicht. Wenn dann eine Dezimalziffer. Und wieviele Dezimalziffern eine Zahl besitzt, hängt von ihrer Darstellung und ab und ob damit verschiedene Ziffern gemeint sind. Daher ist die Frage für mich nicht lösbar und einfach nur unnötig kompliziert gestellt. Bei a bis c ging es ja auch, weil sich die Frage nicht auf die Darstellung bezog.

    Und was du grad sagst, naemlich Dezimalstellen, ist schon wieder was ganz anderes - das sind die Stellen hinterm Komma! Ob das dritte Klasse ist, weiss ich nicht. Aber scheinbar hast du, obwohl das ja so eindeutig ist, das dann auch völlig falsch interpretiert...


  • Mod

    'Dezimalziffer' oder 'dezimale Ziffer' ist eine Ziffer im Dezimalsystem. Selbst wenn man den Begriff nicht kennt, ist er simpel zu erschließen. Somit ist die Darstellung eindeutig festgelegt (z.B sind keine Oktalziffern gemeint).



  • Erstmal hast du es grad schon selbst verwechselt, denn eine dezimale Ziffer und eine Dezimalstelle ist was ganz anderes. Zweitens gibt es auch im Dezimalsystem mehrere Darstellungen für die gleiche Zahl. Drittens werden auch bei Darstellungen einer Zahl in einem anderen Stellenwertsystemen (mindestens teilweise) die gleichen Symbole benutzt wie für Dezimalziffern. Eindeutig ist da also gar nichts.


  • Mod

    @tggc sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    Erstmal hast du es grad schon selbst verwechselt, denn eine dezimale Ziffer und eine Dezimalstelle ist was ganz anderes. Zweitens gibt es auch im Dezimalsystem mehrere Darstellungen für die gleiche Zahl. Drittens werden auch bei Darstellungen einer Zahl in einem anderen Stellenwertsystemen (mindestens teilweise) die gleichen Symbole benutzt wie für Dezimalziffern. Eindeutig ist da also gar nichts.

    Wo verwechsel ich was? Ich schreib nirgends was von Stellen. Welche andere Darstellung fallt dir bei Dezimaldarstellung ein? Führendes '+'? Keine Ziffer. Kompetenz des Programmierers besteht auch darin, einfache, umgangssprachliche Texte zu verstehen, und sich nicht selber Probleme zu machen, wo keine sind.



  • @seppj sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    Kompetenz des Programmierers besteht auch darin, einfache, umgangssprachliche Texte zu verstehen, und sich nicht selber Probleme zu machen, wo keine sind.

    👍


  • Gesperrt

    @mmisk26 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    d) Geben Sie aus, ob a weniger als 3 dezimale Ziffern besitzt.

    Dazu wäre es wohl das Beste, die Zahl als Zeichenkette einzulesen und dann die Anzahl der Dezimalziffern zu zählen.



  • @rbs2 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    @mmisk26 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    d) Geben Sie aus, ob a weniger als 3 dezimale Ziffern besitzt.

    Dazu wäre es wohl das Beste, die Zahl als Zeichenkette einzulesen und dann die Anzahl der Dezimalziffern zu zählen.

    Die Aufgabe lautet das eine Variable int a mit Prompt einliest.


  • Gesperrt

    @manni66 Dann eben den int in ein char[] umwandeln und zählen. Alles andere halte ich für weniger einfach. Ist aber meine Meinung. Natürlich geht es auch anders.


  • Mod

    @rbs2 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    @mmisk26 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    d) Geben Sie aus, ob a weniger als 3 dezimale Ziffern besitzt.

    Dazu wäre es wohl das Beste, die Zahl als Zeichenkette einzulesen und dann die Anzahl der Dezimalziffern zu zählen.

    Das ist eine furchtbare Methode. Extrem ineffizient, funktioniert nicht für negative Zahlen, ist nicht universell erweiterbar auf beliebige Anzahlen von Stellen, relativ schwer umsetzbar für andere Stellenwertsysteme. Gewiss noch mehr, aber das ist was mir spontan durch den Kopf geht. Die andere naheliegende Methode hat keinen einzigen dieser Nachteile.


  • Gesperrt

    @seppj Also wenn eh ein int sein soll, dann gibts ja keine Nachkomastellen. Also wiederholt durch 10 teilen, bis das Ergebnis 0 ist und dann +1, wenn noch ein Rest da ist.



  • @rbs2 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    Dazu wäre es wohl das Beste, die Zahl als Zeichenkette einzulesen u

    @rbs2 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    Dann eben den int in ein char[] umwandeln und zählen. Alles andere halte ich für weniger einfach.

    Die Aufgabe ist dazu da, zu lernen, dass man siesen Mist nicht macht.

    Was ist die größte Dezimalzahl, die man mit drei Stellen darstellen kann?


  • Gesperrt

    @dirkb sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:

    Was ist die größte Dezimalzahl, die man mit drei Stellen darstellen kann?

    999 würde ich sagen.
    Und welche ist die Kleinste?