// GENERAR UN VECTOR DE TIPO XXXX ( varios ) #include <stdio.h> void PideVector(char*); void error(void); void MuestraDatos(char *); void Busca(char *); int CompCade(char *, char *); #define dim 10 /* flot ente cade */ int Vente[dim]; float Vflot[dim]; char *Vchar[dim]; main() { char *Tipo; // Define el tipo de dato para el vector // Si no se reserva espacio de memoria se manda el mensaje "segmentation fault" Tipo = (char*)malloc(5); if (Tipo == NULL) error(); scanf("%s",Tipo); printf("El tipo es= %s", Tipo); PideVector(Tipo); MuestraDatos(Tipo); Busca(Tipo); } void PideVector(char *Tipo) { int x = 0; while (x < dim) { printf("Introduzca el valor de V[%d]= ", x+1); //Son iguales las cadenas? if (strcasecmp(Tipo, "flot") == 0) scanf("%f", &Vflot[x]); if (strcasecmp(Tipo, "ente") == 0) scanf("%d", &Vente[x]); if (strcasecmp(Tipo, "cade") == 0) { Vchar[x] = (char*)malloc(80); if ( Vchar[x] == NULL) error(); scanf("%s",Vchar[x]); } x++; } } void error(void) { printf("error de memoria..."); exit(1); } void MuestraDatos(char *Tipo) { int x = 0; while ( x < dim ) { printf("V[%d] = ", x+1); //Son iguales las cadenas? if (strcasecmp(Tipo, "flot") == 0) printf("%f\n", Vflot[x]); if (strcasecmp(Tipo, "ente") == 0) printf("%d\n", Vente[x]); if (strcasecmp(Tipo, "cade") == 0) printf("%s\n", Vchar[x]); x++; } } /* void qsort(void *base, size_t nmiemb, size_t tam, int (*compar)(const void *, const void *)); */ void Busca(char *Tipo) { char *CadFind; int x = 0; printf("Valor a buscar?: "); if (strcasecmp(Tipo, "cade") == 0) { CadFind = (char*)malloc(80); qsort( Vchar, dim, sizeof((char*)80), CompCade ); MuestraDatos(Tipo); scanf("%s", CadFind); while (x < 10 && strcasecmp(CadFind, Vchar[x]) != 0) x++; printf("\nSe encontro en la posicion %d\n", x); } } int CompCade(char *Cad1, char *Cad2) { return strcasecmp(Cad1, Cad2); }