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>
#include <stdlib.h>
#include <time.h>
int main() {
int n;
double *vetor;
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;
}