Páginas

12 de dez. de 2011

Alocação dinamica

Essa e uma versao do professor Carlos UFSC

#include
#include

#define TAMANHO_VETOR 3
#define LINHA 2
#define COLUNA 2

/**
* Prototipos
*/
/**
* Calcula a media aritmetica dos elementos de um vetor
* @param *vetor
* @param tamanho
* @return double
*/
double calcularMediaVetor(int *vetor, int tamanho);

/**
* Funcao main()
*/
int main(){
int ind, cont;
//Vetor dinamico de numeros inteiros
typedef int *vetorInteiros;
typedef vetorInteiros *matrizInteiros;
//Matriz dinamica de numeros inteiros
matrizInteiros matInt;

printf("Trabalhando com vetores dinamicos\n");
vetorInteiros vetInt;
//Alocando o vetor
vetInt = (int *) calloc(TAMANHO_VETOR, sizeof(int));
//Populando o vetor
for(ind = 0; ind < TAMANHO_VETOR; ind++){
vetInt[ind] += ind;
}
//Listando o vetor
for(ind = 0; ind < TAMANHO_VETOR; ind++){
printf("Vetor[%d]: %d\n", ind, vetInt[ind]);
}
//Imprimindo a media
printf("A media eh: %lf", calcularMediaVetor(vetInt, TAMANHO_VETOR));

printf("\n");
printf("Trabalhando com matrizes dinamicas\n\n");

//Alocando a matriz
matInt = (matrizInteiros) calloc(LINHA, sizeof(vetInt));
for(ind = 0; ind < LINHA; ind++){
matInt[ind] = (vetorInteiros)calloc(COLUNA, sizeof(vetorInteiros));
}
//PREENCHENDO A MATRIZ
printf("Digite os valores da matriz \n");
for(ind = 0; ind < LINHA; ind++){
for(cont = 0; cont < COLUNA; cont++){
scanf("%d",&matInt[ind][cont]);

//matInt[ind][cont] += (ind + cont);
}
}
//IMPRIMINDO A MATRIZ
for(ind = 0; ind < LINHA; ind++){
for(cont = 0; cont < COLUNA; cont++){
printf("Matriz[%d][%d]: %d\n", ind, cont, matInt[ind][cont]);
}
}

return 0;
}

/**
* Implementacao
*/
double calcularMediaVetor(int *vetor, int tamanho){
int ind, soma = 0;

for(ind = 0; ind < tamanho; ind++){
soma += vetor[ind];
}

return (soma/tamanho);
}