C++ Fehler im Quellcode

Gast #1482472
Lesenswert?

Hi ich habe ein kleines Programm geschrieben welches ein paar Zeichen in 
einem bestimmten Muster ausgeben soll. Doch dabei habe ich einen Fehler 
und ich weiß ihn nicht zu beheben.

Vielleicht findet ihr ja den Fehler. Hier ist der Quellcode:
1
#include <conio.h>
2
#include <iostream.h>
3

4
struct sZeichen
5
{
6
  char letter;
7
  char matrix[11][8];
8
  int width;
9
};
10

11
int main(int argc, char* argv[])
12
{
13

14
  int coloum = 20;
15
  int x = 2;
16
  int y = 2;
17

18
  // Initialisierung des Bildschrims;
19

20
  for (int k = 0; k < 15; k++) {
21
    if(k % 2 == 0)
22
    {
23
      gotoxy(x,y);
24
      for (int i = 0; i < coloum; i++) {
25
        cout << "O   ";
26
      }
27
      x += 2;
28
      y += 2;
29
    }
30
    else
31
    {
32
      gotoxy(x,y);
33
      for (int i = 0; i < coloum-1; i++) {
34
        cout << "O   ";
35
      }
36
      x -= 2;
37
      y += 2;
38
    }
39
  }
40

41
  // Ende der Initialisierung
42

43
  sZeichen A;
44
  A.letter = 'A';
45
  A.width = 9;
46
  /*  Zeichen Legende
47
    O = LED aus
48
    # = LED ein
49
    - = LED nicht vorhanden
50
  */
51

52
  A.matrix =
53
  {                        // <---- Zeile 54
54
  //  1   2   3   4   5   6   7   8   9   10  11
55
    {'O','#','#','#','#','#','#','#','O','O','O'},
56
    {'O','#','#','O','#','O','#','#','O','O','O'},
57
    {'#','#','O','O','O','O','O','#','#','O','O'},
58
    {'#','#','O','#','O','#','O','#','#','O','O'},
59
    {'#','#','#','O','#','O','#','#','#','O','O'},
60
    {'#','#','O','O','O','O','O','#','#','O','O'},
61
    {'#','#','O','O','O','O','O','#','#','O','O'},
62
    {'#','-','O','-','O','-','O','-','#','O','O'},
63
  };
64

65

66
  getch();
67

68
  return 0;
69
}

Der Fehler befindet sich an der Zeile 54 so zeigt es zumindest der 
Compiler. Ich hoffe ihr könnt mir weiterhelfen.

Lieben Gruß
#1482491
Lesenswert?

Hallo Ben,

man kann in C(++) einem ganzen Array nicht mitten im Programm einen Wert 
zu weisen, das geht NUR bei der Initialisierung. Du musst die Elemente 
also alle einzeln beschreiben.

Oder Du könntest auch ein globales Array definieren und in der main 
dieses Array in A.matrix kopieren:
1
const char init_matrix[11][8] =
2
{ 
3
  //  1   2   3   4   5   6   7   8   9   10  11
4
    {'O','#','#','#','#','#','#','#','O','O','O'},
5
    {'O','#','#','O','#','O','#','#','O','O','O'},
6
    {'#','#','O','O','O','O','O','#','#','O','O'},
7
    {'#','#','O','#','O','#','O','#','#','O','O'},
8
    {'#','#','#','O','#','O','#','#','#','O','O'},
9
    {'#','#','O','O','O','O','O','#','#','O','O'},
10
    {'#','#','O','O','O','O','O','#','#','O','O'},
11
    {'#','-','O','-','O','-','O','-','#','O','O'},
12
};
13

14
int main()
15
{
16
    sZeichen A;
17
    int i, j;
18
    
19
    for(i=0; i<11; i++)
20
        for(j=0; j<8; j++)
21
            A.matrix[i][j] = init_matrix[i][j];
22
}

MfG Mark
Gast #1482680
Lesenswert?

> man kann in C(++) einem ganzen Array nicht mitten im Programm einen Wert
> zu weisen, das geht NUR bei der Initialisierung.

In der nächsten Version von C++ wird das gehen.

Bis dahin würde es sich aber zumindest anbieten, das eher umständliche
1
    
2
    for(i=0; i<11; i++)
3
        for(j=0; j<8; j++)
4
            A.matrix[i][j] = init_matrix[i][j];

durch ein lesbareres
1
    memcpy(A.matrix, init_matrix, sizeof(A.matrix));

zu ersetzen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren