// tad matriz
// definição da TAD
typedef int TipoChave;
struct t_matriz{
int capacidade;
int tamanho;
int linha;
int coluna;
int numLinhas;
int numColunas;
TipoChave **a;
};
typedef struct t_matriz TipoMatriz;
// operações da TAD matriz
// criar uma nova matriz
void criarMatriz(TipoMatriz *m, int numLinhas, int numColunas);
void imprimirMatriz(TipoMatriz m);
void inserirMatriz(TipoMatriz *m, TipoChave c);
TipoChave obterElementoEm(TipoMatriz m, int linha, int coluna);
void obterPosicaoDe(TipoMatriz m, TipoChave c,
int *linha, int *coluna);
int cheiaMatriz(TipoMatriz m);
// implementacao
void criarMatriz(TipoMatriz *m, int numLinhas, int numColunas){
int c = 0;
m->numLinhas = numLinhas;
m->numColunas = numColunas;
m->capacidade = numLinhas * numColunas;
m->tamanho = 0;
m->linha = 0;
m->coluna = 0;
m->a = (int **) malloc(numLinhas * sizeof(int *));
for (c = 0; c < numLinhas; c++){
m->a[c] = (int *) malloc (numColunas * sizeof (int));
}
}
void imprimirMatriz(TipoMatriz m){
printf("Tamanho: %d\n", m.tamanho);
printf("Capacidade: %d\n", m.capacidade);
printf("Dimensao: %dx%d\n", m.numLinhas, m.numColunas);
int i, j;
for (i = 0; i < m.numLinhas; i++){
for (j = 0; j < m.numColunas; j++){
printf("%d ", m.a[i][j]);
}
}
}
TipoChave obterElementoEm(TipoMatriz m, int linha, int coluna){
if (linha == m.numLinhas || coluna == m.numColunas){
printf("ERRO: posição incorreta!\n");
return -1;
}
return m.a[linha][coluna];
}
void obterPosicaoDe(TipoMatriz m, TipoChave c,
int *linha, int *coluna){
int i, j;
for (int i = 0; i < linhas; i++){
for (j = 0; j < colunas; j++){
if (c == m.a[i][j]){
*linha = i;
*coluna = j;
return;
}
}
}
*linha = -1;
*coluna = -1;
}
int cheiaMatriz(TipoMatriz m){
return m.tamanho - m.capacidade;
}
Nenhum comentário:
Postar um comentário