C++ Fehler im Quellcode

Gast #1482472
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ß
#1482479
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...
Gast #1482483
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.
#1482491
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
> 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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.