# [c/c++] mehrdimensionale arrays



## grillse (18. Februar 2004)

Hallo,

bin ein c++ anfänger und habe nun einmal die Frage wie ich am einfachsten ein Wort in ein mehrdimensioneles Array speichern kann.



Das zum Beispiel das Wort "Hallo" wie folgt gespeichert ist.
buffer[10][0] = H
buffer[10][1] = A
...

Mfg
Tom

PS: Ich habe schon ein bisschen mit cin.get experimentiert, allerdings geht das nur mit 1dimensionalen arrays...


----------



## Fabian H (18. Februar 2004)

Hi,

versuch`s mal heirmit:

```
#include <stdio.h>

int main(int argc, char *argv[])
{
    char *sWords[] = {"foo", "bar", "foobar"};
    int i;
   
    for (i=0; i<3; i++) {
        printf("%s\n", sWords[i]);
    }
    
    
    return 0;
}
```


----------



## aquasonic (18. Februar 2004)

Ich kann zwar überhaupt nicht C++ aber machst du da nicht etwas ganz anderes? Es möchte ein mehrdimensionales Array in das er immer in der zweiten Dimension pro Element ein Buchstabe speichert...?!


----------



## Fabian H (18. Februar 2004)

Hmm, ich hab es so verstanden, dass er eine Usereingabe in eine bestimmte
Dimension des Arrays speichern will.

Du könntest es z.B. recht einfach machen, in dem du ein Array mit fester Größe
initialisierst und dann entsprechen die Strings per _strcpy_ in die einzelnen Ele-
mente des Arrays kopierst.


----------



## grillse (19. Februar 2004)

Hallo,

Ich habe eine Eingabe mit dem Wort Hallo. Dies soll wie oben geschrieben so gespeichert werden:

char buffer[20][10]

buffer[10][0] = H
buffer[10][1] = A
buffer[10][2] = L
buffer[10][3] = L
buffer[10][4] = O

Danach habe ich später evtl. noch eine Eingabe die dann so gespeichert werden soll:

buffer[11][0] = H
buffer[11][1] = A
buffer[11][2] = L
buffer[11][3] = L
buffer[11][4] = O
buffer[11][5] = 2

Ich weiß aber halt nicht wie ich eine eingabe in die zweite dimension(oder wie die heißt =))

Mfg
Tom


----------



## grillse (26. Februar 2004)

*schieb*

kann mir wirklich keiner auskunft geben?


----------



## Kachelator (26. Februar 2004)

Grundsätzlich frage ich mich, was du mit deinem zweidimensionalen Array überhaupt vorhast. Wenn du eine Anzahl von Zeichenketten speichern willst, wie ich annehme, sollest du besser std::string (und eventuell noch std::vector) verwenden, anstatt dich mit char-Arrays rumzuquälen. 

Aber hier ein Lösungsversuch für die zweidimensionalen Arrays. Ich hoffe, dass ich dich richtig verstanden habe. In Main sind die Zuweisungen wie von dir gewünscht direkt als Schleifen drin. Unten habe ich daraus eine Funktion gemacht, die du verwenden könntest. Den Code habe ich weder compiliert noch getestet, also sind möglicherweise noch Fehler drin. Ausserdem sollte man an einigen Stellen noch prüfen, ob eingabe, i und j gültige Werte haben. Ich hoffe, damit kommst du weiter, aber sieh dir bitte mal std::string an, wenn du schon die Gelegenheit hast, mit C++ zu arbeiten statt mit C.


```
#include <stdio.h>

char buffer[20][10];
char user_eingabe1 = "Hallo1";
char user_eingabe2 = "Hallo2";

int main(int argc, char *argv[])
{
  
  int j = 0;
  
  int i = 10;
  for ( j = 0; j <= strlen( user_eingabe1 ); ++j )
  {
    buffer[ i ][ j ] = usereingabe[ j ];
  }

  i = 11;
  for ( j = 0; j <= strlen( user_eingabe2 ); ++j )
  {
    buffer[ i ][ j ] = usereingabe[ j ];
  }

  return 0;
}


void schreibs_rein( char* eingabe, int i )
{
  for ( int j = 0; j <= strlen( eingabe ); ++j )
  {
    buffer[ i ][ j ] = eingabe[ j ];
  }
}
```


----------



## grillse (26. Februar 2004)

Ich glaube inzwischen das es total falsch war wie ich gedacht habe und das mit deinem Code auch nicht klappen würde.

Mal zur Infos.

Ich muss für die Schule ein Programm schreiben welches Kundendaten (die eingebeben werden sollen) speichert.

Also das Programm führt durch eine Eingabe in der man, Name, Ort, Straße usw. eingibt und das abspeichert. Dazu sollte dem Kunden irgendwie eine Kundennummer vergeben werden.

Später soll man dann diese Kundendaten anhand der Kundenummer wieder aufrufen können.

Ich dachte ich könnte dies mit mehrdimensionalen Arrays machen.

Gibt es irgendeine einfache Lösungsmöglichkeit die ich mit meinem "begrenztem" Wissen umsetzen kann?

Es ist wirklich extrem wichtig und ich muss das innerhalb der nächsten 2 Wochen fertigstellen.

Vielen Dank schonmal für die bisherige Hilfe


----------



## Kachelator (26. Februar 2004)

Um deine Kundendaten im Programm abzubilden, solltest du eine Kundenklasse definieren, von der du für jeden ein Objekt erzeugst, mit einer individuellen Kundennummer. Diese Objekte könntest du zum Beispiel in ein Array oder besser noch einenSTL-Container packen. Da kämem zum Beispiel std::vector oder std::map in Frage.

Ich stelle mir das etwa so vor:

```
#include <string>
#include <map>
class Kunde
{
  public:
    std::string   name_;
    unsigned long Id_;
    //- ...weitere Kundendaten (telefon usw.)
};


//- für Verwendung mit maps:
typedef std::map< unsigned long, Kunde > Kundenmap;

Kundenmap AlleMeineKunden;
```


----------



## grillse (26. Februar 2004)

Ich glaub da habe ich wohl einfach pech gehabt, den das ist mehr oder weniger chinesisch für mich :-(

Habe mich an das Thema Klassen bisher kaum heran getraut, daher habe ich dadrüber praktisch kein Wissen.


----------



## Kachelator (26. Februar 2004)

Dann eigne es dir doch an. In diesem Forum findest du eine Menge Vorschläge für Dokumentation; und wenn du Fragen hast, können wir sie dir sicherlich beantworten.


----------



## sasbs (27. Februar 2004)

Versuch's mit structures:


```
struct Kunde {
int ID;
char name[20];
};

main()
{
Kunde meineKunden[40];

  Kunde[1].ID=1;
  strcpy(Kunde[1].name, Name1);

  //etc.

}
```


----------

