C Zahlen nach Hunderter Zehner einer sortieren

Hallo ich habe die Aufgabe bekommen ein kleines tool zu schreiben welches random Zahlen generiert und die random zahl die zwischen 999-0 liegen darf nach 100,10,1 sortiert und ausgibt wieviele jeweils davon vorhanden sind.

Das mit der Random zahl hab ich schon hingekriegt die sortierung und auflistung auf in dem ich durch hindert geteilt habe und mit den resten gearbeitet habe.

Frage ist kann man das intelligenter und schöner lösen?

welches random Zahlen generiert und die random zahl
die zwischen 999-0 liegen darf nach 100,10,1 sortiert und
ausgibt wieviele jeweils davon vorhanden sind.

was soll z.B. bei 821, 441, 729, 17, 4 ausgegeben werden?

Das mit der Random zahl hab ich schon hingekriegt die
sortierung und auflistung auf in dem ich durch hindert geteilt
habe und mit den resten gearbeitet habe.

Frage ist kann man das intelligenter und schöner lösen?

intelligenter und schöner als was?
irgendwie fehlt der Zusammenhang …

Dazu müsste ich schon mal den Quellcode sehen…

Gruß

Hallo,
das hört sich eigentlich nach einer guten Lösung an.
Auf die schnelle würde ich das wohl ähnlich machen.
Sofern nicht anders gefordert:
-) Verwendung des std::rand Funktion um die Zufallszahlen zu generieren. Das Ganze dabei in einen std::vector schreiben. Dieser kann dann ganz einfach mit std::sort sortiert werden.

std::sort(Numbers.rbegin(), Numbers.rend());

wobei Numbers der Vector ist in dem die Zufallszahlen stehen.
-) Vector durchlaufen und mittels Counter zählen welche Werte kleiner bzw. größer 10, bzw. 100 sind.

Ob hier einen Modulorechnung oder ein größer, kleiner Vergleich, im Bezug auf die Laufzeit, die schnellere Lösung ist, kann ich dir allerdings auf die schnelle nicht beantworten.

Ich hoffe das ich dir helfen konnte.

LG

Hallo,

Hallo ich habe die Aufgabe bekommen
ein kleines tool zu
schreiben welches random
Zahlen generiert und die random zahl
die zwischen 999-0 liegen darf
nach 100,10,1 sortiert und
ausgibt wieviele jeweils davon vorhanden sind.

(…)

Frage ist kann man das intelligenter und
schöner lösen?

Hmmm - zuerst mal: Da ich Deine Lösung nicht kenne, muss ich die Frage streng formal mit „Weiss ich nicht“ beantworten.

Mir ist auch die Aufgabe nicht gänzlich klar … kannst Du mir ein Beispiel geben ?

Hallo
erst einmal eine frage zum Verständnis: Du gernerierst eine Random Zahl und zelegtsr diese in 100-er, 10-er und 1-er und gibt das sortiert aus? So auf die schnelle fällt mir auch keine inteligentere Lösung als Deine ein. Da ich mehr mit C# arbeite unfd im letzten Jahr gar nichts programmiert habe ist mein Wissen auch etwas eingerostet. Wäre trotzdem schön, wenn Du mir schreiben würdest ob ich die Aufgabe richtig verstanden habe!!

Gruß Thomas

Hallo,

ich bin mir nicht ganz sicher, was du wirklich machen willst. Aber ich versuche es einfach mal.

An die Einer,Zehner,Hunderter stelle kommst du wie beschrieben mit Division und Modulo

Einset: x % 10
Zehner: (x / 10) % 10
Hundeter (x / 100) % 10

Was du genau sortieren willst hab ich nicht verstanden, die dafür benötigten Algorithmen sind z.B. Auf Wikipedia zu finden. Die einfachsten sind Insertion-Sort und Boubble-Sort.

Wenn du zählen willst wie oft welcher zahlen-währt an welcher stelle vorkommt. Hätte ich dir du Foldendem Algorithmus geraten.

// für den Anfang ein Array für jede stelle. (Kann man auch mit verschachtelten arrays machen)
int einser[10] = {0,0,0,0,0,0,0,0,0,0};
int zehner[10] = {0,0,0,0,0,0,0,0,0,0};
int hunderter[10] = {0,0,0,0,0,0,0,0,0,0};

for (int i = 0 ; i

Das letzte Was du gepostet hast sieht schon mal ganz gut aus.

Ich wollte etwas eleganter random zahlen wie zb.

871
aufteilen in

Hunderter 8
Zehner 7
Einer 1

Habe dabei diese Methode hier benutzt

zahlH = zahl / 100;
zahlE = zahl % 10;
zahlZ = ((zahl % 100) - zahlE) / 10;
Und wollte wissen ob es noch elegantere Methoden gibt.

Hallo,
was meinst du mit „intelligenter und schöner“?
Wenn du die C-Code-Formulierung meinst, solltest du mal deinen Code schicken.
Warum sortieren, wenn doch nur die Summen der 100,10,1ner Zahlenbereiche ausgegeben werden sollen?
Rüdiger

zahlH = zahl / 100;
zahlE = zahl % 10;
zahlZ = ((zahl % 100) - zahlE) / 10;
Und wollte wissen ob es noch elegantere Methoden gibt.

Ich häts vermutlich so … gemacht.

zahlE = zahl % 10;
zahl /= 10;
zahlZ = zahl %10;
zahl /= 10;
zahlH = zahl;

Ob das wirklich eleganter ist, ist eine andere Frage. Der einzig echte Vorteil ist das man es ohne viel nach zu denken auf beliebig lange Zahlen ausweiten kann.

Hab mich falsch ausgedrückt, ich wollte nicht sortieren sondern nur in hundertern,Zehner,Einer ausgeben.
Sortieren wüsste ich wie ich das anstellen hätte können.

Ich wollte wissen ob es noch eine einfachere Möglichkeit gibt als die ,die ich in meinem zweiten Beitrag ausporbiert habe.

Ich sehe keinen 'zweiten Beitrag" mit einer Möglichkeit.
Hast du deinen C-Code schon irgendwo dargestellt?

Ein Funktion macht das ganze vielleicht übersichtlicher:

// Stelle ist 1, 10, 100, 1000, …
int DezimalStelle(int Zahl, int Stelle)
{
return ((Zahl / Stelle) % 10);
}

// Oder als Exponent von 10 mit Exp= 0, 1, 2, 3, …
int DezimalStelleExp(int Zahl, int Exp)
{ // C hat keinen ‚power‘ Operator: Stelle = 10**Exp;
int Stelle = 1;
while (Exp > 0) {
Stelle *= 10);
Exp–;
}
return ((Zahl / Stelle) % 10);
}

// Aufrun Beispiele:
ZahlE = DezimalStelle(Zahl, 1);
ZahlZ = DezimalStelle(Zahl, 10);
ZahlH = DezimalStelle(Zahl, 100);

ZahlE = DezimalStelleExp(Zahl, 0);
ZahlZ = DezimalStelleExp(Zahl, 1);
ZahlH = DezimalStelleExp(Zahl, 2);

Hallo ich habe die Aufgabe bekommen ein kleines tool zu
schreiben welches random Zahlen generiert und die random zahl
die zwischen 999-0 liegen darf nach 100,10,1 sortiert und
ausgibt wieviele jeweils davon vorhanden sind.

Frage ist kann man das intelligenter und schöner lösen?