0
It does not correctly check the largest. For each animal it shows the weight of the animal as being the largest.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define TAM_MIN 1
#define TAM_MAX 500
/*
Síntese
Objetivo: Classificar animais de um zoológico segundo seu peso.
Entrada: Números de animais do zoológico, e para cada animal,
o número de identificação e o peso em gramas.
Saída: A identificação e peso do animal mais pesado, a identificação
e o peso do animal mais leve, e a quantidade de animais de
peso menor que o peso médio de todos os animais.
*/
void mostra_resultados(int id_animal[TAM_MAX], float peso_animal[TAM_MAX]);
int le_valida_codigo_animal(char titulo[]);
float le_valida_peso_animal(char titulo[]);
int le_valida_inteiro(int valor_min, int valor_max, char *texto);
int main() {
int i=1;
int cod_animal[TAM_MAX]={0};
float peso_animal[TAM_MAX]={0};
printf("#--- Cadastro de animais ---#");
int num_animais = le_valida_inteiro(TAM_MIN, TAM_MAX, "\nDigite o numero de animais do zoologico:");
for (i; i <= num_animais; i++) {
cod_animal[i] = le_valida_codigo_animal("Digite o codigo de identificacao dos animais:");
peso_animal[i] = le_valida_peso_animal("Digite o peso (em gramas) do animal:");
system("cls");
}
mostra_resultados(cod_animal,peso_animal);
return 0;
}
//Valida o numero de animais(entre 1 e 500)
int le_valida_inteiro(int valor_min, int valor_max, char texto[]) {
int num_animais = 0;
while (1) {
printf("%s", texto);
scanf("%d", &num_animais);
if (num_animais >= valor_min && num_animais <= valor_max) {
return num_animais;
}
printf("\nValor invalido.\nDigite um numero entre %d e %d!", valor_min, valor_max);
}
}
//Valida o codigo do animal
int le_valida_codigo_animal(char titulo[]) {
int cod=0;
do{
printf("%s", titulo);
scanf("%d", &cod);
if(cod<0){
printf("Codigo nao pode ser negativo");
}
}while(cod<0);
return cod;
}
float le_valida_peso_animal(char titulo[]){
float peso_animal=0;
do{
printf("%s", titulo);
scanf("%f", &peso_animal);
if(peso_animal<0){
printf("O peso nao pode ser menor que zero!");
}
}while(peso_animal<0);
return peso_animal;
}
//Exibe o id e o peso do animal mais pesado
void mostra_resultados(int id_animal[TAM_MAX], float peso_animal[TAM_MAX]){
int i;
float mais_pesado[0];
for(i=0;i<TAM_MAX;i++)
{
if(peso_animal[i] > mais_pesado[i])
{
mais_pesado[i] = peso_animal[i];
printf("Codigo de identificao: %d\n", id_animal[i]);
printf("Animal mais pesado: %3.f gramas\n", mais_pesado[i]);
}
}
}
I think I got it, guys!
– Lucas Correia
I was wrong. I thought I solved it, but it’s still giving the same problem. I think I’ll do test each case separately: the heaviest, the least heavy, and the average of the weights.
– Lucas Correia