Brauche Hilfe bei Dezimalstellen ausgabe!
-
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...
-
'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.
-
@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.
-
@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.
-
@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.
-
@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.
-
@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?
-
@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?
-
@mmisk26 probier mal mit float statt int, da int nur ganze Zahlen annimmt.
-
@rbs2 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:
999 würde ich sagen.
Und, muss man das als char[] behandeln?
oder als float?@rbs2 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:
Und welche ist die Kleinste?
-999 bringt dich nicht viel weiter.
-
@thony2069 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:
probier mal mit float statt int, da int nur ganze Zahlen annimmt.
Es geht immer noch nicht um Nachkommastellen.
-
@dirkb sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:
Und, muss man das als char[] behandeln?
oder als float?Ich denke es ist ein int, also als Ganzzahl.
-999 bringt dich nicht viel weiter.
Das ist keine Antwort auf meine Frage.
-
Vorschlag:
int digits (int z) { int n = (z<0) ? 2 : 1; // negativ? while (z = z/10) n++; // ziffern zaehlen return n; }
Wenn man die 10 in der while-zeile austauscht, geht das analog auch für andere zahlensysteme, wie hex z.b.
int digits (int z, unsigned base) { int n = (z<0) ? 2 : 1; // negativ? while (z = z/base) n++; // ziffern zaehlen return n; }
-
@rbs2 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:
-999 bringt dich nicht viel weiter.
Das ist keine Antwort auf meine Frage.
q.e.d
Warum hat -1 zwei Dezimalstellen?
Warum nimmst du nicht log10?
-
@dirkb sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:
Warum nimmst du nicht log10?
Das mag keine 0 und keine negativen Zahlen und spuckt außerdem einen 'double'-Wert aus. Die blöden Sonderfälle machen alles nur komplizierter.
int digits (int z) { if (!z) return 1; int sign = (z<0); z = sign ? -z : z; return (int)log10(z)+sign+1; }
-
@rbs2 sagte in Brauche Hilfe bei Dezimalstellen ausgabe!:
Das mag keine 0 und keine negativen Zahlen und spuckt außerdem einen 'double'-Wert aus. Die blöden Sonderfälle machen alles nur komplizierter.
Wenn's doch nur eine einfache, unkomplizierte Lösung gäbe, die alles abdeckt. Leider gibt es keine solche Lösung und sie ist auch nirgendwo in diesem Thread erwähnt worden...