Forum: PC-Programmierung C++ Fehler im Quellcode


von gentleBen (Gast)


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ß

von Justus S. (jussa)


Lesenswert?

gentleBen schrieb:

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

und was für ein Fehler auftritt ist mal wieder ein Geheimnis...das eine 
Komma dürfte zu viel sein...

von Sven P. (Gast)


Lesenswert?

Justus Skorps schrieb:
> und was für ein Fehler auftritt ist mal wieder ein Geheimnis...das eine
> Komma dürfte zu viel sein...
Zumindest in C ist das Komma sogar explizit erlaubt.

von Mark .. (mork)


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

von Rolf Magnus (Gast)


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.

von Stupstrub (Gast)


Lesenswert?

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

w00t oO  Ernsthaft???

von th (Gast)


Lesenswert?


von Rolf Magnus (Gast)


Lesenswert?

Neuere Versionen von g++ unterstützen es sogar schon, wenn man mit
-std=c++0x übersetzt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.