C int array[n] zu x int ???

Hi

hab eine Frage, wie kann ich aus einem Array einzelne Zahlen auslesen? also nicht einfach nur aus dem array den kompletten Wert lesen, sondern aus dem Wert die einzelnen Zahlen.

Bespiel:
?nt array[3] = { 123, 456, 789 };

aber ich möchte aus array[1], drei int's machen.

also

array[1] = int a = 1, int b = 2, int c = 3

und aus

array[2] = int d = 4, int e = 5, int f = 6

array[3] = int g = 7, int h = 8, int i = 9


geht das überhaupt? und wenn ja, wie?

Danke im voraus.

pz

NeoN
 
Kannst du das etwas weniger wirr ausdrücken? Wenn ich dich richtig verstehe, willst du die einzelnen Zehnerstellen einer Zahl haben? Das hat dann aber überhaupt nichts mit arrays zu tun.
Standardalgorithmus um die einzelnen Stellen einer Zahl zur Basis b zu bekommen:
Solange Ganzzahldivision durch b, bis das Ergebnis 0 ist, jeweils der Rest ist eine Stelle der Zahl zur Basis b. Man erhält die Stellen von der niederwertigsten an.

Greets, Ziri
 
Ach ja, man macht das nicht so

array[1] = bla
array[2] = bla
array[3] = bla

sondern so:

array[0] = bla
array[1] = bla
array[2] = bla

frag nicht wieso, machs einfach.....
 
Original von SuperSkater
Ach ja, man macht das nicht so

array[1] = bla
array[2] = bla
array[3] = bla

sondern so:

array[0] = bla
array[1] = bla
array[2] = bla

frag nicht wieso, machs einfach.....

lol ja du hast Recht, aber das hat ja nichts mit meinem Problem zu tun.

Beispiel:

array[2] = { 123, 456, 789 };

array[0] hat den Wert 123;

also um den Wert 123 in einer variablen zu speichern könnte ich

array[0] = a;

machen z.B. allerdings möchte ich das eben nicht
aber das problem ist, das ich nicht 123 haben will, sondern ich möchte aus dem array[0] die einzelenen Zahlen des Wertes bekommen. Also 1 in einer extra variablen speichern, 2 in einer extra variablen speichern und 3 in einer extra variablen speichern ...

ich hoffe das macht es etwas verständlicher.
 
Du muesstest statt einem int-array ein char-array nehmen.
SOmit kannst du auf jeden einzelnen Charakter zugreifen.
Code:
	char arr1[3][4]={"123","456","789"};

	char a,b,c;

	a=arr1[0][0]; //a=1

	b=arr1[0][1]; //b=2

	c=arr1[0][2]; //c=3

	cout << a << b << c << endl;

MfG

Raptor
 
Neon, wenn du Fragen stellst solltest du dir die Antworten auch durchlesen, das erste Posting hat deine Frage bereits beantwortet.

Nornagest
 
@Nornagest

Nein das hat er nicht. Er hat gefragt ob ich mich anders ausdrücken kann und gemutmaßt was ich meinen könnte. Du solltest vielleicht besser die Posts intepretieren. ;)

Außerdem wo liegt denn das Problem? Naja, wie auch immer gut das du gepostest hast. :rolleyes:

@Raptor

Danke für deine Antwort, wusste nicht, dass man mehrdimensionale Strings nutzen kann. Oder verstehe ich da was falsch? Werde das morgen ausprobieren.
 
Original von NeoN
Nein das hat er nicht. Er hat gefragt ob ich mich anders ausdrücken kann und gemutmaßt was ich meinen könnte.
Und damit habe ich nach der weiteren Entwicklung des Thread zu urteilen offenbar richtig gelegen. Tja, lesen und verstehen :rolleyes:
Wenn dir natürlich Strings ausreichen brauchst du den Algorithmus nicht.
 
es ist einfacher die zahl 123 in ein array[3] (1,2,3) zu packen und die einzelnen vektoren auszulesen.

ist weniger aufwaendig als mit basis zu n zu arbeiten und (malloc/strlen) einfacher/universeller zu machen.

snprintf und/oder sprintf und danach atoi sind deine freunde dabei.
ggf speicher mit malloc/realloc holen um dynamik zu gewaehrleisten.

mfg

nachtrag

int bla[3];
...
bla[0] = 123;
char tmp[3];

(void)sprintf(tmp,"%i",(int)bla[0]);

dann haste was sin tmp und kanns es zerhacken.
ggf. auch snprintf() (rtfm)

mfg
 
Leider hat Raptors Beispiel nicht funktioniert.

mehrdimensionale Strings scheinen unter C nicht zu gehen, weiß nicht ob das nur in C++ möglich ist, aber in C nicht.

bekomme immer "conflicting types for 'string'" fehler, oder was für einen Fehler mache ich?




Danke Gulliver

deine Methode geht

Code:
#include <stdio.h>

int main()
{
  int bla[3];
  char a[1];
  char tmp[3];
  
  bla[0] = 123;
  sprintf(tmp,"%i",bla[0]);
  a[0] = tmp[1];
  printf("%s", a);
  
  return 0;
}

allerdings bekomme ich einen komischen Output

Output:
2{

wieso bekomme ich da eine '{' dazu? und wie bekomme ich nur die Zahl zwei?

wenn ich es ohne den zwischenschritt "a[0] = tmp[1];" mache und eben bei printf tmp angebe, dann kommt ja auch nur "123" raus. Naja danach habe ich es mit atoi probiert. was aber auch probleme macht. :(

Code:
#include <stdio.h>
#include <stdlib.h>

int main()
{
  int bla[3];
  int a;
  char tmp[3];
  
  bla[0] = 123;
  sprintf(tmp,"%i",bla[0]);
  a = atoi(tmp[2]);
  printf("%d", a);
  
  return 0;
}
wenn ich diesen code compiliere dann bekomme ich einen "passing arg 1 of 'atoi' makes pointer from integer without cast" fehler

Also muss ich "tmp[2]" zu "tmp" umändern, also "a = atoi(tmp);" nutzen, aber dann war das ganze wieder umsonst, da ich dann ja wieder "123" als Wert für die variable "a" habe und nicht den gewünschten Wert "3".

grrr :rolleyes: ?( ;(

hoffe mir kann noch jemand weiterhelfen
 
mach statt char[1], char[2]
und dann nach dr zuweisung null terminieren char[2]='\0';
oder einfach nur char *a = NULL;
a = atoi(tmp[n];
 
Zurück
Oben