Fehler im Stack...



  • Hallo,

    wollte einen Stack programmieren wo ich spielkarten die sich durch zweidimensionale arrays darstellen lassen jedoch funktioniert dieser net 😞
    würde mich über jeden tipp und hilfe freuen 😃

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Element{
    	int *data;
    	struct Element *next;
    }Element;	
    
    int push(Element **stack,int *data);
    
    int pop(Element **stack,int **data);
    
    int createStack(Element **stack);
    
    int deleteStack(Element **stack);
    
    int createStack(Element **stack){
    	*stack=NULL;
    	return 0;
    }
    
    int push(Element **stack,int *data){
    	Element *elem;
    	elem=(Element*)malloc(sizeof(Element*));
    	if (!elem) return 1;
    
    	elem->data=data;
    	elem->next=*stack;
    	*stack=elem;
    	return 0;
    }
    
    int pop(Element **stack,int **data){
    	Element *elem;
    	elem=*stack;
    	if (!elem) return 1;
    
    	*stack=elem->next;
    	*data=(elem->data);
    	free(elem);
    	return 0;
    }
    
    int deleteStack(Element **stack){
    	Element *next;
    
    	while(*stack){
    		next=(*stack)->next;
    		free(*stack);
    		*stack=next;
    	}
    	return 0;
    }
    
    void Karte1(int Matrix[5][5]);
    int main(int argc, char *argv[]){
    
    	Element *stack;
    
    	int MatrixA[5][5] = {   };
            int x,y,*Karte1 ;
    
            MatrixA[2][0] = '+' ;
            MatrixA[2][1] = '+' ;
            MatrixA[2][2] = '+' ;
    
            for(x=0; x<5; x++) {
    	for(y=0; y<5; y++)
            {
               printf("%c", MatrixA[x][y]);
    	} 
              printf("\n");
            }
    
            void Karte2(int Matrix[5][5])
             {
              int MatrixB[5][5] = {  };
              int x,y,*Karte2;
              MatrixB[0][2] = '+';
              MatrixB[1][2] = '+' ;
              MatrixB[2][2] = '+' ;
              MatrixB[2][3] = '+' ;
              MatrixB[2][4] = '+' ;
              MatrixB[3][1] = 'X' ;
              MatrixB[3][2] = 'X' ;
              MatrixB[3][3] = 'X' ;
              MatrixB[4][0] = 'X' ;
              MatrixB[4][4] = 'X' ;
    
             for(x=0; x<5; x++) {
    	 for(y=0; y<5; y++)
            {
               printf("Karte2: %c", MatrixB[x][y],*Karte2);
    	} 
              printf("\n");
            }
    
            }
     void Karte3(int Matrix[5][5])
            {
             int MatrixC[5][5] = {  };
             int x,y,*Karte3;
             Matrix[0][0] = 'X';
             Matrix[0][4] = 'X';
             Matrix[1][1] = 'X';
             Matrix[1][2] = 'X';
             Matrix[1][3] = 'X';
             Matrix[2][0] = '+';
             Matrix[2][1] = '+';
             Matrix[2][2] = '+';
             Matrix[2][3] = '+';
             Matrix[2][4] = '+';
             Matrix[3][1] = 'X';
             Matrix[3][2] = 'X';
             Matrix[3][3] = 'X';
             Matrix[4][0] = 'X';
             Matrix[4][4] = 'X';
    
             for(x=0; x<5; x++) {
    	 for(y=0; y<5; y++)
            {
               printf("Karte3: %c", MatrixC[x][y],*Karte3);
    	} 
              printf("\n");
            }
            }
    
     void Karte4(int Matrix[5][5])
            {
             int MatrixD[5][5] = {  };
             int x,y,*Karte4 ;
             Matrix[0][0] = 'X';
             Matrix[1][1] = 'X';
             Matrix[2][1] = 'X';
             Matrix[2][2] = '+';
             Matrix[2][3] = '+';
             Matrix[2][4] = '+';
             Matrix[3][1] = 'X';
             Matrix[4][0] = 'X';
    
            for(x=0; x<5; x++) {
    	for(y=0; y<5; y++)
            {
               printf("Karte4: %c", MatrixD[x][y],*Karte4);
    	} 
              printf("\n");
            }
            }
    
    void Karte5(int Matrix[5][5])
            {
             int MatrixE[5][5] = {  };
             int x,y,*Karte5;
             Matrix[0][0] = 'X';
             Matrix[1][1] = 'X';
             Matrix[2][1] = 'X';
             Matrix[2][2] = '+';
             Matrix[2][3] = '+';
             Matrix[2][4] = '+';
             Matrix[3][1] = 'X';
             Matrix[4][0] = 'X';
    
            for(x=0; x<5; x++) {
    	for(y=0; y<5; y++)
            {
               printf("Karte5: %c", MatrixE[x][y],*Karte5);
    	} 
              printf("\n");
            }  
            }
    
    void Karte6 (int Matrix[5][5])
          {
           int MatrixF[5][5] = {  };
           int x,y,*Karte6;
           Matrix[0][0] = 'X';
           Matrix[0][4] = 'X';
           Matrix[1][1] = 'X';
           Matrix[1][3] = 'X';
           Matrix[2][1] = 'X';
           Matrix[2][3] = 'X';
           Matrix[3][1] = 'X';
           Matrix[3][3] = 'X';
           Matrix[4][0] = 'X';
           Matrix[4][4] = 'X';
    
            for(x=0; x<5; x++) {
    	for(y=0; y<5; y++)
            {
               printf("Karte6: %c", MatrixF[x][y],*Karte6);
    	} 
              printf("\n");
            }
            }
    
    	createStack(&stack);
    	if(push(&stack,&MatrixA[x][y])==1)
    		printf("Error pushing\n");
    
    	if(pop(&stack,&MatrixA[x][y])==1)
    		printf("Error poping\n");
    
    	return 0;
         }
    

    [edit by rapso]code tags [/edit]



  • Oh Gott, wo hast du das abgeschrieben?

    - was ist der Fehler/was funktioniert nicht?
    - das gehört ins C Forum nicht ins Spieleforum
    - es gibt C/C++ Tags, warum benutzt du die nicht?
    - malloc-Cast == Schrott
    - hast du die Compilerwarnungen abgearbeitet? mit Sicherheit nicht!
    - was sollen die unsinnigen MatrixD usw?
    - leere Initialisierungslisten -> undefiniertes Verhalten == Schrott
    - Dereferenzierung eines uninitialisierten Zeigers -> undefiniertes Verhalten == Schrott
    - ...

    Da kann überhaupt nichts funktionieren.


  • Mod

    um wutz' post nochmal zu einem tipp zusammenzufassen: du musst erstmal programmieren lernen, ohne grundlagen wirst du nicht weit kommen.


Anmelden zum Antworten