Avatar billede caturn Nybegynder
19. november 2003 - 21:35 Der er 20 kommentarer og
1 løsning

To dimensionelle arrays og char variabel

Hej!

Hvordan laver man 2-dimensionelle arrays i C++? Altså noget i stil med array[1][4].

Jeg har defineret en char variabel sådan her:
char level[20];
Hvordan får jeg den til at indeholde følgende:
Teksten "level", værdien af integer x, teksten "x", værdien af integer y.
Sådan at når den er defineret kan den for eksempel være:
level2x4

Håber I som sædvanlig kan hjælpe! :-)
Avatar billede arne_v Ekspert
19. november 2003 - 21:40 #1
char level[1][4];

er legal C++ syntax !
Avatar billede caturn Nybegynder
19. november 2003 - 21:42 #2
Så på den måde får jeg bare to pladser i "første dimension" og fire i anden?
Avatar billede arne_v Ekspert
19. november 2003 - 21:42 #3
Jeg er ikke helt sikker på hvad du vil.

char level[1][4][20];
strcpy(level[0][0],"level");
sprintf(level[0][1],"%d",x);
strcpy(level[0][2],"x");
sprintf(level[0][3],"%d",y);

måske ?
Avatar billede arne_v Ekspert
19. november 2003 - 21:42 #4
en plads i første dimension (hvorfor vil du have den ?)
Avatar billede caturn Nybegynder
19. november 2003 - 21:44 #5
Til den om level variablen:
Hvad jeg hellere skal bruge noget andet en char så sig endelig til.
Eller rettere, jeg synes char er lidt akavet (har arbejdet i PHP før...) så hvis der bedre alternativer så kom endelig med dem.
Avatar billede caturn Nybegynder
19. november 2003 - 21:47 #6
Altså i defineringen af den.
Det om level variablen og to dimensionel array er to forskellige spørgsmål.

Det to dimensionelle arrray skal bruges i et slags koordinatsystem.
Sådan at den første dimension er x og den anden y.
Avatar billede arne_v Ekspert
19. november 2003 - 21:50 #7
Hvis det er C++ og du skal bruge strenge, så er der STL string.

string s = "noget tekst";
Avatar billede caturn Nybegynder
19. november 2003 - 21:54 #8
string level = "level" , x , "x" , y;


Giver: Syntax error before "="
Avatar billede caturn Nybegynder
19. november 2003 - 21:55 #9
sting.h er inkluderet
Avatar billede caturn Nybegynder
19. november 2003 - 21:55 #10
string.h
Avatar billede caturn Nybegynder
19. november 2003 - 21:57 #11
Jeg fjernede .h og det hjalp men nu kommer:

test3.cpp:16: conflicting types for `class string x'
test3.cpp:12: previous declaration as `int x'
test3.cpp:16: parse error before string constant

Det er vel noget med mine kommaer... Det er sikkert forkert at bruge dem.
Linie 12 er : int x = 1;
Avatar billede arne_v Ekspert
19. november 2003 - 21:59 #12
Du kan:

string level[4] = { "level", "1", "x", "2" };
Avatar billede arne_v Ekspert
19. november 2003 - 22:00 #13
Men alle elementer i et array skal have samme type.
Avatar billede caturn Nybegynder
19. november 2003 - 22:01 #14
Jo men x og y ændres i løbet af mit program. Faktisk rigtig meget.
Avatar billede arne_v Ekspert
19. november 2003 - 22:05 #15
Du kan altid sige:

level[1] = "247";
Avatar billede caturn Nybegynder
19. november 2003 - 22:05 #16
Nu kompilerer mit program med linierne:

string level;
level = "level" , x , "x" , y;

Men jeg kan ikke få den til at skrive indholdet af level på skærmen.
Kan det ikke gøres med cout?
Avatar billede arne_v Ekspert
19. november 2003 - 22:08 #17
Du kan skrive elementerne ud enkelvist.

cout << level[i];
Avatar billede arne_v Ekspert
19. november 2003 - 22:08 #18
Jeg tror ikke at:

level = "level" , x , "x" , y;

gør det du vil.
Avatar billede segmose Nybegynder
20. november 2003 - 09:47 #19
const LevelX = 2;
const LevelY = 4;
const MAXLEN = 17; // max possible length of string
char Level[LevelX][LevelY][MAXLEN];

for (int i = 0; i < LevelX; i++)
  for (int j = 0; j < LevelY; i++)
    sprintf(Level[i][j], "Level%dx%d", i, j);

Hvad det det? (utestet)
Avatar billede caturn Nybegynder
28. november 2003 - 18:30 #20
Nej. Ellers tak.
Avatar billede caturn Nybegynder
28. november 2003 - 18:32 #21
Vi snakker fuldstændig forbi hinanden.
Jeg prøver at udtænke en anden måde at løse opgaven på.

Lukker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester