#include #include #include "tabela_simbolos.h" int compara_inteiro (const void * a, const void * b){ return ( *(int*)a - *(int*)b ); } void imprime_inteiro (const void * a){ printf("%d", *(int*)a); return; } void imprime_string (const void * a){ printf("%s", (char*)a); return; } typedef struct sele{ void * valor; void (*imprime)(const void*); }elemento; void imprime_elemento(elemento e){ e.imprime(e.valor); printf("\n"); return; } int main(int argc, char * argv[]){ int * vetor = (int*) malloc(5*sizeof(int)); vetor[0] = 50; vetor[1] = 10; vetor[2] = 25; vetor[3] = 40; vetor[4] = 30; qsort(vetor, 5, sizeof(int), compara_inteiro); for(int i = 0; i < 5; i++){ printf("%d\n", vetor[i]); } int a = 5; char * b = "teste"; int c = 4; char * d = "testao"; elemento * vetor_generico = (elemento *) malloc(5*sizeof(elemento)); vetor_generico[0].valor = (void*) &a; vetor_generico[0].imprime = imprime_inteiro; vetor_generico[1].valor = (void*) b; vetor_generico[1].imprime = imprime_string; vetor_generico[2].valor = (void*) &c; vetor_generico[2].imprime = imprime_inteiro; vetor_generico[3].valor = (void*) d; vetor_generico[3].imprime = imprime_string; for(int i = 0; i < 4; i++){ imprime_elemento(vetor_generico[i]); } free(vetor); return 0; }