Faça um programa que pergunte ao usuário quantos valores ele deseja armazenar em um vetor de double, depois use a função MALLOC para reservar (alocar) o espaço de memória de acordo com o especificado pelo usuário. Esse vetor deve ter um tamanho maior ou igual a 10 elementos. Use este vetor dinâmico como um vetor comum, atribuindo aos 10 primeiros elementos do vetor valores aleatórios (usando a função rand) entre 0 e 100. Exiba na tela os valores armazenados nos 10 primeiros elementos do vetor.

Passo 1

Primeiro vamos entender o que o programa deve fazer: pedir ao usuário um inteiro n ≥ 10, alocar um vetor dinâmico de double com tamanho n usando malloc, preencher os 10 primeiros elementos com valores aleatórios entre 0 e 100 e exibi-los.

Passo 2

Ler o valor de n via scanf e validar que n ≥ 10. Se o usuário digitar um valor menor que 10, pedir novamente até que ele informe um valor válido.

Passo 3

Usar malloc para reservar espaço para n elementos do tipo double: calcular n * sizeof(double) bytes e atribuir o ponteiro retornado a uma variável do tipo double*. Verificar se malloc retornou NULL.

Passo 4

Inicializar o gerador de números aleatórios com srand(time(NULL)). Para i de 0 até 9, gerar um valor rand() % 101 (que varia de 0 a 100) e atribuí-lo ao vetor dinâmico na posição i.

Passo 5

Percorrer de i=0 até 9 e usar printf para exibir cada valor armazenado nas 10 primeiras posições do vetor.

Passo 6

Liberar a memória alocada com free antes de terminar o programa e retornar 0.

Resposta

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int n;
double *vetor;
// Passo 1: Ler e validar tamanho mínimo
do {
    printf("Quantos valores deseja armazenar (>= 10)? ");
    scanf("%d", &n);
    if (n < 10) {
        printf("O valor deve ser pelo menos 10. Tente novamente.\n");
    }
} while (n < 10);

// Passo 2: Alocar dinamicamente
vetor = (double *) malloc(n * sizeof(double));
if (vetor == NULL) {
    printf("Erro na alocação de memória!\n");
    return 1;
}

// Passo 3: Gerar valores aleatórios
srand(time(NULL));
for (int i = 0; i < 10; i++) {
    vetor[i] = (double)(rand() % 101);
}

// Passo 4: Exibir os 10 primeiros valores
printf("\nValores nos 10 primeiros elementos do vetor:\n");
for (int i = 0; i < 10; i++) {
    printf("vetor[%d] = %.2f\n", i, vetor[i]);
}

// Passo 5: Liberar memória e encerrar
free(vetor);
return 0;
}

Exercícios relacionados