Um vetor float *peso contém o peso de n pessoas. Escreva um programa em
que identifique qual é a pessoa mais pesada e qual é a pessoa mais leve. O tamanho
do vetor e os pesos de cada pessoa devem ser gerados aleatoriamente. O programa deve produzir a seguinte saída:
A pessoa numero XXX e' a mais leve (peso = XXX.X kg)
A pessoa numero XXX e' a mais pesada (peso = XXX.X kg)
A pessoa numero XXX e' a mais leve (peso = XXX.X kg)
A pessoa numero XXX e' a mais pesada (peso = XXX.X kg)
Passo 1
Resumindo o problema: precisamos gerar aleatoriamente o tamanho n de um vetor de floats que armazena pesos de pessoas, preencher esse vetor com valores de peso aleatórios, e então identificar qual índice corresponde ao peso mínimo (mais leve) e qual corresponde ao peso máximo (mais pesado). Vamos usar alocação dinâmica e as funções rand() e time() para gerar aleatoriedade.
Passo 2
Inicializar o gerador de números aleatórios usando srand(time(NULL)), de modo que a cada execução do programa os valores mudem.
Gerar o tamanho n do vetor dinamicamente. Por exemplo, podemos escolher n aleatoriamente entre 1 e 10 com a expressão rand() % 10 + 1.
Alocar dinamicamente um vetor float *peso de tamanho n usando malloc.
Gerar o tamanho n do vetor dinamicamente. Por exemplo, podemos escolher n aleatoriamente entre 1 e 10 com a expressão rand() % 10 + 1.
Alocar dinamicamente um vetor float *peso de tamanho n usando malloc.
Passo 3
Preencher o vetor peso com valores aleatórios de peso. Para gerar um float com uma casa decimal entre, digamos, 40.0 e 100.0 kg, usamos algo como (rand() % 601 + 400) / 10.0.
Passo 4
Percorrer o vetor para encontrar o índice da pessoa mais leve e o índice da pessoa mais pesada. Inicializamos ambos ao primeiro elemento e, a cada novo elemento, comparamos para atualizar mínimos e máximos.
Passo 5
Imprimir o resultado no formato requisitado:
A pessoa numero XXX e’ a mais leve (peso = XXX.X kg)
A pessoa numero XXX e’ a mais pesada (peso = XXX.X kg)
A pessoa numero XXX e’ a mais leve (peso = XXX.X kg)
A pessoa numero XXX e’ a mais pesada (peso = XXX.X kg)
Passo 6
Liberar a memória alocada antes de encerrar o programa.
Resposta
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
srand(time(NULL));
int n = rand() % 10 + 1; // tamanho aleatório entre 1 e 10
float *peso = malloc(n * sizeof(float));
if (peso == NULL) {
fprintf(stderr, "Falha na alocação de memória.\n");
return 1;
}
// Preenchendo pesos aleatórios entre 40.0 e 100.0 kg
for (int i = 0; i < n; i++) {
peso[i] = (rand() % 601 + 400) / 10.0f;
}
int idx_min = 0, idx_max = 0;
for (int i = 1; i < n; i++) {
if (peso[i] < peso[idx_min]) {
idx_min = i;
}
if (peso[i] > peso[idx_max]) {
idx_max = i;
}
}
printf("A pessoa numero %d e' a mais leve (peso = %.1f kg)\n", idx_min + 1, peso[idx_min]);
printf("A pessoa numero %d e' a mais pesada (peso = %.1f kg)\n", idx_max + 1, peso[idx_max]);
free(peso);
return 0;
}