Zahl in Ziffern zerlegen und abspeichern.
-
Hallo zusammen,
ich habe hier eine Aufgabe vor mir, die für Euch wahrscheinlich sehr einfach ist, für mich aber eine unlösbare Aufgabe darstellt.
Aufgabe:
Die Zahl 1234 in ihre einzelnen Ziffern zu zerlegen -> 1, 2 , 3, 4 und diese in einem Array abzuspeichern
Wie wollte ich vorgehen?
Ich wollte mit folgenden Konzept vorgehen:
1234 % 10 = 4
1234 % 100 = 34/10 = 3
1234 % 1000= 234/100 = 2
1234 % 10 000 = 1234/1000 = 1Testweise wollte ich mir zunächst nur die Mudolos abbilden lassen:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int n= 1234; int anzahl=4; int ergebnis; for (int i=0 ; i<anzahl; i++){ int a= pow(10.0 , 1+i); ergebnis= n % a; printf("%d\n\n",ergebnis); } return 0; }
als Ergebnis bekomme ich:
4
46
234
1234
Soweit so gut, aber wieso spuckt er mir die 46 aus? Dort müsste doch 34 stehen?
Ich verwende das Programm Codeblocks.
Danke im Voraus.
-
@daniwe sagte in Zahl in Ziffern zerlegen und abspeichern.:
Soweit so gut, aber wieso spuckt er mir die 46 aus?
Weil Du nicht das Programm ausführst das zu dem Code gehört den du hier gepostet hast.
Billiger:
#include <stdio.h> int main() { int n = 1234; do printf("%d\n", n % 10); while (n /= 10); }
-
Dieser Beitrag wurde gelöscht!
-
@titan99_ sagte in Zahl in Ziffern zerlegen und abspeichern.:
to_string
Schau' mal in welchem Forum Du hier bist.
-
Dieser Beitrag wurde gelöscht!
-
@Swordfish sagte in Zahl in Ziffern zerlegen und abspeichern.:
@daniwe sagte in Zahl in Ziffern zerlegen und abspeichern.:
Soweit so gut, aber wieso spuckt er mir die 46 aus?
Weil Du nicht das Programm ausführst das zu dem Code gehört den du hier gepostet hast.
Billiger:
#include <stdio.h> int main() { int n = 1234; do printf("%d\n", n % 10); while (n /= 10); }
Danke für Eure antworten!
Sorry @Swordfish Ich verstehe nicht ganz - gibt es Fehler in meinem Code oder warum meinst du das ich den nicht ausführe?
Dein Code klappt ja schonmal super , gibt es dazu auch die Möglichkeit die einzelnen Zahlen in einem Array abzuspeichern?
Grüße
EDIT:
Ich glaube ich habe verstanden was du meinst. Ich wollte mir mit diesem Code nicht die einzelnen Zahlen ausgeben lassen, sondern bezüglich meiner Idee oben erstmal nur die Mudolos anzeigen lassen - Schritt für Schritt.
mit dem Code wollte ich mir das Ergebnis des fett-makierten darstellen lassen.
1234 % 10 = 4
1234 % 100 = 34/10 = 3
1234 % 1000= 234/100 = 2
1234 % 10 000 = 1234/1000 = 1
-
@daniwe sagte in Zahl in Ziffern zerlegen und abspeichern.:
Sorry @Swordfish Ich verstehe nicht ganz - gibt es Fehler in meinem Code oder warum meinst du das ich den nicht ausführe?
Wir wissen das, weil der Code, den du hier gezeigt hast, eben nicht
4 46 234 1234
ausgibt, sondern
4 34 234 1234
Kann man einfach durch Copy&Paste hier sehen: https://ideone.com/3kdpff
Warum du den falschen Code ausführst: Du wirst vermutlich irgendwo durcheinander gekommen sein, welches Programm wo liegt, oder welchen Code du wo übersetzt hast. Vielleicht hast du eine frühere Testversion ausgeführt.
Dein Code klappt ja schonmal super , gibt es dazu auch die Möglichkeit die einzelnen Zahlen in einem Array abzuspeichern?
Er gibt die Ziffern einzeln aus, aber du darfst natürlich auch gerne etwas anderes tun, außer ausgeben.
-
@Swordfish sagte in Zahl in Ziffern zerlegen und abspeichern.:
Billiger:
so wird die zahl auch vorwärts ausgegeben ...
int main() { int n = 1234; char mem[64] = { 0 }, * p = mem + 63; do *--p = '0' + n % 10; //printf("%d\n", n % 10); while (n /= 10); printf (p); }
-
Tatsächlich...Also war mein Code zumindest nicht ganz so falsch. Ich habe Codeblocks in zwei verschieden Versionen. Beide liefern das falsche Ergebnis. Seltam.. Gibt es gute alternativen zu Codeblocks (sollten natürlich for free sein)?
Also ich habe leider keine Ahnung was @Swordfish da genau macht, deshalb fällt es mir schwer die ausgegeben Ziffern in einem Array zu speichern. While Schleifen sind mir schon ein Begriff, aber da habe ich einfach noch zu wenig Erfahrung.
Ich würde auf jedenfall eine Laufvariable und ein Array initalisieren, dann würde ich i (von 0 aus) in der do-while Schleife hochzählen lassen und die Werte in das Array schreiben lassen.
#include <stdio.h> int main() { int n = 1234; int i=0; int array [4]; do printf("%d\n", n % 10); while (n /= 10); i++; array [i] = n; }
naja.. ein Versuch war es Wert
-
@Bushmaster sagte in Zahl in Ziffern zerlegen und abspeichern.:
int n = 1234; char mem[64] = { 0 }, * p = mem + 63; do *--p = '0' + n % 10; //printf("%d\n", n % 10); while (n /= 10); printf (p);
Was soll der Schrott? UB.
-
@daniwe sagte in Zahl in Ziffern zerlegen und abspeichern.:
Gibt es gute alternativen zu Codeblocks (sollten natürlich for free sein)?
-
@Wutz sagte in Zahl in Ziffern zerlegen und abspeichern.:
Was soll der Schrott?
ausprobieren, dann meckern, lieber freund.
-
@daniwe
Anfänger und alle Möchtegern-C-Profis sollen immer for benutzen und niemals while. So auch bei dir.#include <stdio.h> int main() { int i, new = 1234; int array[1000]; for(i=0;;i++) { array[i]=new%10; if(new/=10) continue; else break; } for(;i>-1;i--) /* array rückwärts ausgeben */ printf("%d",array[i]); return 0; }
-
@Bushmaster sagte in Zahl in Ziffern zerlegen und abspeichern.:
@Wutz sagte in Zahl in Ziffern zerlegen und abspeichern.:
Was soll der Schrott?
ausprobieren, dann meckern, lieber freund.
Dorftrottel.
Du hast - wie immer - keine Ahnung wovon du redest. UB findet man niemals durch ausprobieren, wenn du den Standard verstanden hättest, würdest du merken, wie lächerlich naiv du hier sinnfrei mit deinem aufgeschnappten Halbwissen daherfaselst.
-
@Wutz sagte in Zahl in Ziffern zerlegen und abspeichern.:
Dorftrottel.
Du hast - wie immer - keine Ahnung wovon du redest. UB findet man niemals durch ausprobieren, wenn du den Standard verstanden hättest, würdest du merken, wie lächerlich naiv du hier sinnfrei mit deinem aufgeschnappten Halbwissen daherfaselst.möchtest du mir nicht wenigstens sagen was dir an dem code nicht gefällt, lieber freund?
-
@Wutz sagte in Zahl in Ziffern zerlegen und abspeichern.:
Anfänger und alle Möchtegern-C-Profis sollen immer for benutzen und niemals while.
sollen? lol
-
@Bushmaster
Getroffene Hunde heulen.
-
@Bushmaster
Wenn du hier länger dabei wärst und Ahnung von C-Programmierung hättest, wüsstest du, dass ich mich nie auf das Niveau von Stümpern wie dir herablasse und für ihren durchschaubaren Versuch, ihren Stümpercode zu korrigieren, ihnen auch noch die UBs aus dem Standard und dem Code raussuche.
-
@Wutz Vielen Dank, den Code habe ich gut verstanden!
@Bushmaster @Wutz, entspannt Euch, Ihr habt mir geholfen, das Ziel ist erreicht. Also lasset Frieden herrschen
-
@Wutz sagte in Zahl in Ziffern zerlegen und abspeichern.:
Wenn du hier länger dabei wärst und Ahnung von C-Programmierung hättest, wüsstest du, das ich mich nie auf das Niveau von Stümpern wie dir herablasse und für ihren durchschaubaren Versuch, ihren Stümpercode zu korrigieren, ihnen auch noch die UBs aus dem Standard und dem Code raussuche.
du willst also nur stänkern? tztztz ....
-
@daniwe sagte in Zahl in Ziffern zerlegen und abspeichern.:
@Wutz Vielen Dank, den Code habe ich gut verstanden!
@Bushmaster @Wutz, entspannt Euch, Ihr habt mir geholfen, das Ziel ist erreicht. Also lasset Frieden herrschen
alles gut. hab den kerl jetzt geblockt.
wer while schleifen hasst, von dem kann man auch sonst nichts erwarten.