Hilfe bei der Fehlersuche und Fehlerbehebung



  • Hallo.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
            int blabla = 66;
    
            for(int a=0; a<4; a++){ 
                    switch(blabla){
                    case 66:
                            bool zeichenMatrix[6][6] = {
                                    {0,1,1,0,0,0},
                                    {1,0,0,1,0,0},
                                    {1,1,1,1,0,0},
                                    {1,0,0,1,0,0},
                                    {1,0,0,1,0,0},
                                    {0,0,0,0,0,0}};
                    break;
                    case 67:
                            bool zeichenMatrix[6][6] = {
                                    {1,1,1,0,0,0},
                                    {1,0,0,1,0,0},
                                    {1,1,1,0,0,0},
                                    {1,0,0,1,0,0},
                                    {1,1,1,0,0,0},
                                    {0,0,0,0,0,0}};
                    }
                    for(int i=0; i<6; i++){
                            for(int x=0; x<6; x++){
                                    totalMatrix[x][6*a+i] = zeichenMatrix[x][i];
                            }
                    }
            }
    }
    

    Warum bekomme ich diesen Fehler?

    matrix3.cpp: In function ‘int main()’:
    matrix3.cpp:47:22: error: jump to case label [-fpermissive]
    matrix3.cpp:39:9: error:   crosses initialization of ‘bool zeichenMatrix [6][6]’
    matrix3.cpp:48:41: error: redeclaration of ‘bool zeichenMatrix [6][6]’
    matrix3.cpp:39:9: error: ‘bool zeichenMatrix [6][6]’ previously declared here
    matrix3.cpp:58:29: error: ‘zeichenMatrix’ was not declared in this scope
    

    Was kann ich dagegen tun?



  • Ich rate mal, daß Du sowas suchst:

    #include <cstdio>
    #include <cstdlib>
    
    bool zeichenMatrixA[6][6]= {
    	{0,1,1,0,0,0},
    	{1,0,0,1,0,0},
    	{1,1,1,1,0,0},
    	{1,0,0,1,0,0},
    	{1,0,0,1,0,0},
    	{0,0,0,0,0,0}
    };
    bool zeichenMatrixB[6][6] = {
    	{1,1,1,0,0,0},
    	{1,0,0,1,0,0},
    	{1,1,1,0,0,0},
    	{1,0,0,1,0,0},
    	{1,1,1,0,0,0},
    	{0,0,0,0,0,0}
    };
    
    int main() {
    	int blabla = 66;
    	bool (*zeichenMatrix)[6];
    	for(int a=0; a<4; a++) {
    		switch(blabla) {
    			case 'A':
    				zeichenMatrix=zeichenMatrixA;
    				break;
    			case 'B':
    				zeichenMatrix=zeichenMatrixB;
    				break;
    		}
    		for(int i=0; i<6; i++) {
    			for(int x=0; x<6; x++) {
    				totalMatrix[x][6*a+i] = zeichenMatrix[x][i];
    			}
    		}
    	}
    }
    


  • Das Probelm wäre dann, dass ich am ende ca. 50 verschiedene Arrays habe. Ich weiß nicht, ob sich das sonderlich positiv auf das programm auswirkt.


  • Mod

    luke666 schrieb:

    Das Probelm wäre dann, dass ich am ende ca. 50 verschiedene Arrays habe. Ich weiß nicht, ob sich das sonderlich positiv auf das programm auswirkt.

    Ob die nun im Datensegment oder im Programmsegment liegen, ist doch egal. Die 50 Arrays hast du auf jeden Fall, wenn du die Arrays explizit im Programmcode stehen hast. Wenn du dich wirklich um 1800 Bytes sorgst, dann musst du dir eben eine Rechenvorschrift zur Erzeugung deiner Matrizen ausdenken, um damit Laufzeit gegen Speicherbedarf zu tauschen.



  • luke666 schrieb:

    Das Probelm wäre dann, dass ich am ende ca. 50 verschiedene Arrays habe. Ich weiß nicht, ob sich das sonderlich positiv auf das programm auswirkt.

    Die bool-arrays kannste wiederum in ein Array stopfen, dann isses dreidimensional.

    Kannst ein wenig packen, indem Du bits in einem großen int nimmst, statt bools. (Auch evtl in ein Array.)

    uint64_t zeichenA=0b\
    011000\
    100100\
    111100\
    100100\
    100100\
    000000\
    ;
    
    #include <iostream>
    #include <cstdint>
    using namespace std;
    
    uint64_t zeichenA=0b\
    011000\
    100100\
    111100\
    100100\
    100100\
    000000\
    ;
    
    int main() {
    	uint64_t zeichen=zeichenA;
    	for(int i=0; i<6; i++) {
    		for(int x=0; x<6; x++) {
    			cout<<" *"[(zeichen&(uint64_t(1)<<35))!=0];
    			zeichen<<=1;
    		}
    		cout<<'\n';
    	}
    }
    

Log in to reply