no exemplo anterior era necessário informar a qtd de bois, o que foi abominado pelo professor (aqle fd...). apo´s um pouco de estudo consegui resolver esse problema. ai veio o problema do boi mais magro. depois de um pouco mais de estudo descobri que o problema estava na entrada dos valores para suas respectivas variaveis mais_gordo e mais_magro. o problema era que a variavel mais_magro só recebia o 1º valor inserido, dai quando o programa percorria o vetor para verificar o mais magro só havia o 1º peso inserido, dai ele mostrava o mais magro como sendo o 1º. o código correto ficou assim: #include <stdio.h> #include <stdlib.h> int main() { int cont, i=0; float *num_boi = NULL; float peso; float mais_gordo = 0; float mais_magro = 20000; num_boi = (float *)calloc(1, sizeof(float)); while(peso > 0){ printf("Digite o peso do %do BOI: ", (i+1)); scanf("%f", &peso); num_boi = peso; if(peso > 0 && peso > mais_gordo){ mais_gordo = peso;} else if (peso >0 && peso < mais_magro){ mais_magro = peso;} i++; num_boi = (float *)realloc(num_boi, (i+1)*sizeof(float)); } cont = i; puts("\nLISTA \n"); for(i=0; i<cont-1; i++){ printf("%do Boi tem %.2fKg\n", (i+1), num_boi);} for(i=0; i<cont; i++){ if(mais_gordo == num_boi[i-1]){ printf("\nO BOI mais pesado e o %do\n", i, mais_gordo); break;} } for(i=0; i<cont; i++){ if(mais_magro == num_boi[i-1]){ printf("\nO BOI mais leve e o %do\n\n", i, mais_magro); break; } } free(num_boi); system("pause"); return 0; } agradeço a todos que ajudaram e me ponho a disposição de vocês para ajudar no que puder: MSN - contajogofabio@hotmail.com :lol: