Eine int in ein int-array

Reiskocher

Grünschnabel
So guten Abend again,

ich habe mal wieder eine Frage, nachdem ich mal wieder was Zeit gefunden habe.
Ich bin eher etwas am herumtesten.

Ich hole mir per
C:
...
int i;
scanf("%i", &i);
...
eine Zahl ein. Diese Zahl aber ist "zusammenhängend, das meine ich so "128".
Ich will die Zahl aber in ein Array packen, das heißt, dass ich in einem array nachher z.B.: soetwas haben möchte:

C:
arrayname[0] = 1;
arrayname[1] = 2;
arrayname[3] = 8;

also, ich will eine Zahl wie "128" in "1", "2", "8" zerlegen, wie realisiere ich das einfach und nicht kompliziert? bitte auch eine Erklärung dabei, sonst bringt mir das nichts.... wäre super nett, danke.

P.S.: Man muss mit den Arraywerten rechnen können :p . . . ich habe oben nicht auf die syntax geachtet, aber bitte, ihr macht das ja? ^^

lg

alex
 
do könntest mit modulo für jede stellen (einer, zehner, hunderter...) heraus finden welcher wert dort jeweils vorkommt, und dass dann in ein array packen:

var = 128 - 128 % 100
array[0] = var / 100
var = 128 - 128 % 10
var = 128 - (array[0] * 100)
array[1] = var / 10
var = 128 - (array[0] * 100) - (array[1] * 10)
array[2] = var


dann hast du:
array[0] = 1
array[1] = 2
array[2] = 8

wobei du natürlich 128 durch eine variable ersetzen solltest :p
Skini
 
Mit dem Array rechnen?
Naja, da wird dir der Compiler aber nicht helfen...
das wird eine Menge Schreibarbeit :)
Falls du das so vorgeschrieben bekommenhast, kann man da wohl nichts machen, aber falls das nur deine eigene Idee war, würd ich dringend zum int raten.

Oder du könntest auch vor dem Rechnen mit atoi etc die Zahlen wider in ein int packen, damit rechnen und das Ergebnis wieder in ein Array.

Hier nch ein anderer Lösungsvorschlag:
wenn zahl/array schon gegeben sind

Code:
sprintf(array,"%d",zahl);

for(int hi=0;hi<strlen(array);hi++)array[hi]-=48;

Ohne der Schleife (mein die ganze zweite Zeile) kriegst du es in einer lesbaren Form, zum Ausgeben mit puts etc.

Wenn du nur die einzelnen Ziffern (zum Rechnen?) brauchst, nimm die Schleife dazu
Da solltest du noch etwas dazunehmen:
Code:
int zifferanz=strlen(array);
das kommt zwischen sprintf und die Schleife, damit du weisst, wieviel Ziffern das eigentlich sind

Wenn du das ganze mit Schleife gemacht hast, solltest du nach der Rechnerei
das ganze wieder lesbar machen,
Code:
for(int ho=0;ho<zifferanz;ho++)array[ho]+=48;
array[zifferanz]='\0';

Hoffe das ich mich nirgends verschrieben habe
gruß
 
Zuletzt bearbeitet:
soll das ganze variable sein jenachdem ob nu 128 also feld[2] oder 1280 fled[3]?
 
Zuletzt bearbeitet:
also ich sage einfach mal was ich machen möchte. Ich möchte einfach mal aus testgründen eines Anfängers :p einen Binärzahl -> Dezimalzahl umrechner erstellen. d.h.
erst:
-eine Eingabe des Benutzers einholen (z.B.: 01001010)
-gucken ob die einzelnen Ziffern wirklich nur 1 und 0 sind und nichts anderes
-dann halt die hintere Zahl*2(hoch 0 )
-ergebnis merken
- die zweite Zahl von hinten*2²
-auf ergebnis rechnen
....

und so weiter halt ne? :p

bitte um hilfe, und nicht um eine Lösung,... danke ^^

alex
 
Wir haben dir doch schon alle nötigen denk anstöße gegeben, und wenn wir noch weiter gehen würden müssten wir hier den Fertigen Code Posten, oder zumindestens den Pseudocode :p.
Also, wie können wir dir noch helfen?
 

Neue Beiträge

Zurück