Faça um código para gerar 10 números do tipo int no intervalo de 0 a 25 e armazenar em um vetor. Utilize um ponteiro para acessar o vetor. Ao final, apresente todos os números do vetor, diga a média da sequência, o maior e menor número gerado.
Passo 1
Beleza, vamos resolver esse exercício juntos! A gente precisa escrever um código que gera 10 números inteiros entre 0 e 25, armazena esses números em um vetor, usa um ponteiro para acessar esse vetor e, por fim, mostra todos os números, a média, o maior e o menor número gerado. Para isso, vamos trabalhar com conceitos de vetores, ponteiros, geração de números aleatórios e operações básicas como soma e comparação.
Passo 2
Primeiro, vamos criar um vetor que vai armazenar os 10 números inteiros. Em C, a gente faz assim:
int vetor[10];
Aqui,
int
indica que o vetor vai armazenar números inteiros e [10]
define que o vetor tem 10 posições.Passo 3
Agora, precisamos preencher esse vetor com números aleatórios entre 0 e 25. Para isso, usamos a função
rand()
que gera números aleatórios. Mas, pra limitar o intervalo, usamos o operador de módulo %
. Também precisamos garantir que os números gerados sejam diferentes a cada execução do programa usando srand(time(0))
.#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int vetor[10];
srand(time(0)); // Inicializa o gerador de números aleatórios
for(int i = 0; i < 10; i++) {
vetor[i] = rand() % 26; // Gera números entre 0 e 25
}
Passo 4
Agora, vamos usar um ponteiro para acessar o vetor. Um ponteiro é uma variável que armazena o endereço de outra variável. Assim, a gente pode acessar os elementos do vetor usando o ponteiro.
int *ptr = vetor; // Ponteiro aponta para o início do vetor
Passo 5
Vamos imprimir todos os números do vetor usando o ponteiro. A gente pode percorrer o vetor acessando cada posição através do ponteiro.
printf("Números gerados: ");
for(int i = 0; i < 10; i++) {
printf("%d ", *(ptr + i));
}
printf("\n");
Aqui,
*(ptr + i)
acessa o elemento na posição i
do vetor.Passo 6
Para calcular a média, precisamos somar todos os números e depois dividir pela quantidade (10). Vamos adicionar uma variável para acumular a soma.
int soma = 0;
for(int i = 0; i < 10; i++) {
soma += *(ptr + i);
}
float media = (float)soma / 10;
printf("Média da sequência: %.2f\n", media);
Converti a soma para
float
para obter uma média com casas decimais.Passo 7
Agora, vamos encontrar o maior e o menor número gerado. Inicializamos as variáveis
maior
e menor
com o primeiro elemento do vetor e depois comparamos com os demais. int maior = *ptr;
int menor = *ptr;
for(int i = 1; i < 10; i++) {
if(*(ptr + i) > maior) {
maior = *(ptr + i);
}
if(*(ptr + i) < menor) {
menor = *(ptr + i);
}
}
printf("Maior número: %d\n", maior);
printf("Menor número: %d\n", menor);
return 0;
}
Resposta
Pronto! Quando você rodar esse código, ele vai gerar 10 números aleatórios entre 0 e 25, mostrar todos eles, calcular a média da sequência, e identificar qual é o maior e o menor número gerado. A estrutura completa fica assim:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int vetor[10];
srand(time(0)); // Inicializa o gerador de números aleatórios
// Preenche o vetor com números aleatórios de 0 a 25
for(int i = 0; i < 10; i++) {
vetor[i] = rand() % 26; // Gera números entre 0 e 25
}
int *ptr = vetor; // Ponteiro aponta para o início do vetor
// Imprime os números gerados
printf("Números gerados: ");
for(int i = 0; i < 10; i++) {
printf("%d ", *(ptr + i));
}
printf("\n");
// Calcula a média
int soma = 0;
for(int i = 0; i < 10; i++) {
soma += *(ptr + i);
}
float media = (float)soma / 10;
printf("Média da sequência: %.2f\n", media);
// Encontra o maior e o menor número
int maior = *ptr;
int menor = *ptr;
for(int i = 1; i < 10; i++) {
if(*(ptr + i) > maior) {
maior = *(ptr + i);
}
if(*(ptr + i) < menor) {
menor = *(ptr + i);
}
}
printf("Maior número: %d\n", maior);
printf("Menor número: %d\n", menor);
return 0;
}
Quando você compilar e executar esse programa, ele vai mostrar os 10 números, a média deles, e indicar qual foi o maior e o menor número gerado.