questo qua fa il primo partizionamento, però è meglio se riscrivo la funzione divideM per renderla più portabile e di conseguenza anche la parte del main, in modo da non doversi massacrare ad ogni frazionamento!
codice:
#include<stdio.h>
#define SIZE 32
void printM(const char matrix[][*]);
void cleanM(char matrix[][*]);
void divideM(char matrix[][*]);
int X=0,Y=0;
int LIM;
int main(void)
{
	int count=0,temp;
	char matrix[SIZE][SIZE];
	cleanM(matrix);
	//prima divisione
	LIM=(SIZE/2-1); 
	temp=0;
	while(count<4){
		divideM(matrix);
		if(X==SIZE/2){
			Y=temp;
		}
		else{
			X=temp;
			temp=Y;
		}
		count++;
	}
	printM(matrix);
	return 0;
}
void cleanM(char matrix[][SIZE])
{
	int i,j;
	for(i=0;i<SIZE;i++){
		for(j=0;j<SIZE;j++){
			matrix[i][j]='x';
		}
	}
}
void printM(const char matrix[][SIZE])
{
	int i,j;
	for(i=0;i<SIZE;i++){
		for(j=0;j<SIZE;j++){
			printf("%c|",matrix[i][j]);
		}
		printf("\n");
	}
}
void divideM(char matrix[][SIZE])
{
	int i=0;
	matrix[X][Y+LIM]='A';
	for(;i <=(SIZE/2-1);X++,Y++,i++){
		matrix[Y][X]='D';
	}
	
	
}